2016-07-11 16 views
0

Ich muss die eindeutigen Instanzen in einem Feld zählen, dann die Anzahl nach ihrem Datum sortieren und versuche, alles in einer Abfrage mit SQL zu erledigen.Sie müssen eindeutige Vorkommnisse in einer Spalte zählen und das Ergebnis nach Datum gruppieren

Ich habe Tabelle, die wie folgt aussieht:

Date...........Defect_Code.......... 
2016-06-12  Machine Issue 
2016-06-12  Broken 
2016-06-12  null 
2016-06-13  Machine Issue 
2016-06-13  Machine Issue 
2016-06-14  Crack 
2016-06-14  Crack 

ich dafür möchte nach Datum sortiert werden, während die Instanz jedes Defect_Code Zählen in einer Tabelle resultierende suchen ähnlich wie

Date............Count(Machine Issue)...Count(Broken)...Count(Crack)...Count(null).... 
2016-06-12......1......................1...............0..............1.............. 
2016-06-13......2......................0...............0..............0.............. 
2016-06-14......0......................0...............3..............0.............. 

Vielen Dank im Voraus für jede Hilfe!

+0

die 'Defect_Code' Werte statisch sind? –

+0

Ja, sie sind @juergen d – ckoch

+0

Im Allgemeinen werden Probleme der Datenanzeige am besten in der Ebene der Präsentationsebene/der Anwendungsebene behandelt, vorausgesetzt, dass diese verfügbar ist. – Strawberry

Antwort

0

Sie können mit bedingter Aggregation tun dies, da die Werte für Defect_Code konsistent sind:

SELECT Date 
    , COALESCE(SUM(CASE WHEN Defect_Code = 'Machine Issue' THEN 1 END),0) AS 'Count(Machine Issue)' 
    , COALESCE(SUM(CASE WHEN Defect_Code = 'Broken' THEN 1 END),0) AS 'Count(Broken)' 
    , COALESCE(SUM(CASE WHEN Defect_Code = 'Crack' THEN 1 END),0) AS 'Count(Crack)' 
    , COALESCE(SUM(CASE WHEN Defect_Code IS NULL THEN 1 END),0) AS 'Count(Null)' 
FROM YourTable 
GROUP BY Date 
ORDER BY Date 
+0

Bang! Perfekte Antwort, danke. – ckoch