Jak napisać zapytanie SQL implementujące funkcję Excel SUMIFS
Mam taki stół:
Date Sales Department Store
02/01/2012 4.09 Toys A
03/01/2012 5.90 Toys A
02/01/2012 6.64 Toys B
03/01/2012 4.71 Toys B
02/01/2012 16.72 Toys C
03/01/2012 1.37 Toys C
02/01/2012 13.22 Movies A
03/01/2012 18.06 Movies A
02/01/2012 5.97 Movies B
03/01/2012 16.71 Movies B
02/01/2012 15.38 Movies C
03/01/2012 19.75 Movies C
I chcesz taki stół, w którym uwzględniane są tylko Store A i B:
Date Toys Movies
02/01/2012 10.73 19.19
03/01/2012 10.61 34.77
Oto funkcja SUMA, której używamy w EXCEL:
=SUMIFS(Value;Date;$H4;Department;I$3;Store;"<>C")
Co możemy napisać w SQL?
Weź pod uwagę, że jest to krótki przykład, tabela bazy danych ma ponad 30 działów i wiele dat. Korzystałem ze skryptu
SELECT DISTINCT Date,
ISNULL(MAX(CASE WHEN Department = 'Toys' AND Store = 'A' THEN Sales END),0) +
ISNULL(MAX(CASE WHEN Department = 'Toys' AND Store = 'B' THEN Sales END),0) [Toys],
ISNULL(MAX(CASE WHEN Department = 'Movies' AND Store = 'A' THEN Sales END),0) +
ISNULL(MAX(CASE WHEN Department = 'Movies' AND Store = 'B' THEN Sales END),0) [Movies]
FROM Table$
GROUP BY Date
ORDER BY Date
... ale to nie jest skuteczne. Dziękujemy za wszelkie wskazówki.