2017-04-17 10 views
0

Ich habe Tabelle, die ID, Datum und Status enthalten, dh öffnen/schließen Ich möchte nur ein Ergebnis in sql, die Monat weise öffnen, schließen und Gesamtzählung von Id zB In Jan öffnen 15 zählen, in der Nähe Zählung 5 und Gesamtzählwert 20So erhalten Sie eine bestimmte Zeile

+0

Hinweis: 'GROUP BY'. –

+1

können Sie mir Beispiel geben – WeeZy

+1

Welche DB-Engine verwenden Sie? –

Antwort

0

Verwenden RollUp() und Gruppieren nach unten ein:

;WITH T AS 
(
    SELECT 
     Id,  
     DATENAME(MONTH,[Date]) AS [MonthName],   
     Status 
    FROM @tblTest 
) 
SELECT 
    [MonthName], 
    [Status], 
    StatusCount 
FROM 
(
    SELECT 
     MonthName, 
     CASE ISNULL(Status,'') WHEN '' THEN 'Total' ELSE Status END AS Status,   
     Count(Status) AS StatusCount       
    FROM T 
    GROUP BY ROLLUP([MonthName],[Status]) 
)X 
WHERE X.MonthName IS NOT NULL 
ORDER BY X.[MonthName],X.[Status] 

Output:

enter image description here

Hinweis: Bei Bedarf Daten in einzelnen Zeilen von Monat dann gelten PIVOT

+0

Ihre ans ist absolut korrekt und funktioniert für mich aber können sie nur erarbeiten ... – WeeZy

+0

Ich denke, dass Sie sehr gut vertraut mit Gruppe von. Zusätzlich gibt es RollUp und Cube-Funktionalität, die zusätzliche Zeilen hinzufügen, um Ihre Gruppenzusammenfassung/Gruppenfuß hinzuzufügen. Lesen Sie mehr: https://oracle-base.com/articles/misc/rollup-cube-grouping-functions-and-grouping-sets –

+0

Schauen Sie auch hier: http://stackoverflow.com/questions/7053471/understanding- the-differences-zwischen-cube-und-rollup –

-1
select year(date), month(date), 
     sum(case when status = 'open' then 1 else 0 end) as open_count, 
     sum(case when status = 'closed' then 1 else 0 end) as closed_count, 
     count(*) as total_count 
from your_table 
group by year(date), month(date) 
Verwandte Themen