2017-03-02 5 views
0

Ich versuche herauszufinden, wie diese 3 Abfragen zu einem mit einer prozentualen Spalte machen, die ich nicht in der Lage gewesen bin herauszufinden. Kann jemand helfen?SQL Abfrage Änderung/Optimierung

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

Wie lautet die Formel für die prozentuale Spalte? Welche Version von SQL Server verwenden Sie? – Sparrow

+0

Es sollte sein, was überwacht wird geteilt durch Gesamttonnage mal 100. Ich benutze Microsoft SQL Server 2008 – ivias

Antwort

1

Dies sollte funktionieren.

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

Ich bekomme eine falsche Syntax in der Nähe des Schlüsselwortes 'ORDER'. – ivias

+0

Vielleicht die Klammer? Ich habe bearbeitet, aber ich kann nicht testen, also nicht sicher, was es verursacht. –

+0

Ungültiger Spaltenname oben für Assoziation, TotalTonnage, Überwacht usw. sowie Ungültige Syntax in der Nähe von 'Bestellung' und Ungültiger Spaltenname für Assoziation unten – ivias