2017-03-02 112 views
0

我想弄清楚如何將這3個查詢合併爲一個百分比列,我還沒有弄清楚。任何人都可以協助SQL查詢修改/優化

Select DISTINCT a.ASSN As Association, SUM(tonnage_adjusted) as TotalTonnage   
From DeliveryTons d INNER JOIN ReapingGroups a ON d.reaping_code = a.REAPING_GROUP_CODE 
WHERE reaping_code IS NOT NULL 
Group By a.ASSN 
ORDER BY Association 


Select DISTINCT a.ASSN As Association, SUM(tonnage_adjusted) as Monitored  
From DeliveryTons d INNER JOIN ReapingGroups a ON d.reaping_code = a.REAPING_GROUP_CODE 
WHERE remarks = '' AND reaping_code IS NOT NULL 
Group By a.ASSN 
ORDER BY Association 


Select DISTINCT a.ASSN As Association, SUM(tonnage_adjusted) as NotMonitored   
From DeliveryTons d INNER JOIN ReapingGroups a ON d.reaping_code = a.REAPING_GROUP_CODE 
WHERE remarks = 'NO_TICKET' AND reaping_code IS NOT NULL 
Group By a.ASSN 
ORDER BY Association 
+0

百分比列的公式是什麼?另外,你使用的是什麼版本的SQL服務器? – Sparrow

+0

它應該是什麼監視除以totaltonnage時間100. im使用Microsoft SQL Server 2008 – ivias

回答

1

這應該起作用。

With Summary as (
    Select a.ASSN As Association 
      ,SUM(tonnage_adjusted) as TotalTonnage 
      ,SUM(case when remarks = '' THEN tonnage_adjusted ELSE NULL END) as Monitored 
      ,SUM(case when remarks = 'NO_TICKET' THEN tonnage_adjusted ELSE NULL END) as NotMonitored 
    From DeliveryTons d 
    INNER JOIN ReapingGroups a 
    ON d.reaping_code = a.REAPING_GROUP_CODE 
    WHERE d.reaping_code IS NOT NULL 
    Group By a.ASSN 
    ) 

SELECT Association 
     ,TotalTonnage 
     ,Monitored 
     ,NotMonitored 
     ,((Monitored/TotalTonnage) * 100) as pct_Monitored 
    FROM Summary 
    Order by Association 
+0

我得到一個不正確的語法靠近關鍵字'訂單'。 – ivias

+0

也許括號?我編輯過,但我無法測試,所以不知道是什麼原因造成的。 –

+0

獲取Association,TotalTonnage,Monitored等頂部的無效列名稱以及'Order'附近的Invalid Syntax和底部Association的無效列名 – ivias