2016-06-19 10 views
2

Ich habe diese Daten in einer Tabelle:Get Counts nach Last Date in SQL Server

+-------------+-------+----------------+ 
| id | Added | Removed | Date  | 
+-------------+-------+----------------+ 
| 1 | yes | yes | 06-19-2016 | 
| 2 | yes | yes | 06-19-2016 | 
| 3 | yes | false | 06-19-2016 | 
| 4 | false| yes | 09-19-2016 | 
| 5 | yes | yes | 09-19-2016 | 
| 6 | false| false | 10-19-2016 | 
| 7 | false| yes | 10-19-2016 | 
| 8 | yes | false | 10-19-2016 | 
| 9 | false| yes | 11-19-2016 | 
+-------------+-------+-----------------+ 

Ich weiß, insgesamt hinzugefügt und entfernt weise Rekord für Datum ist wie

Date  TotalRecordAdded TotalRecordRemoved 
06-19-2016   3     2 
09-19-2016   1     2 
10-19-2016   1     1 
11-19-2016   0     1 

Was die SQL ist Serverabfrage für dieses Ergebnis?

+0

Bitte zeigen Sie uns, was Sie bisher versucht haben, und uns sagen, wo Sie stecken - wir froh sein zu helfen, aber wir schreibe nicht einfach den ganzen Code für dich ... –

+1

Das kannst du ganz einfach machen, indem du in deiner select-Klausel (sum case wenn Added = 'yes' ...) verwendest. Außerdem würde ich die Werte als 0/1 anstelle von Strings speichern. –

Antwort

2

Sie können es mit bedingter Aggregation mit CASE EXPRESSION:

SELECT t.date, 
     COUNT(CASE WHEN t.added = 'yes' THEN 1 END) as TotalRecordAdded, 
     COUNT(CASE WHEN t.removed = 'yes' THEN 1 END) as TotalRecordRemoved 
FROM YourTable t 
GROUP BY t.date