Ich bin auf der Suche nach einem Weg zu zusammenfassen Werte mit dynamischen Gruppierungsbedingungen in nur einer Abfrage, wenn möglich. Das bedeutet auch keineUNION ALL
. (Die Abfrage unten ist ganz einfach und UNION ALL
würde überhaupt nicht teuer sein, aber wenn die Quelldaten aus einer Reihe von Tabellen gesammelt werden muss, nimmt es Performace alle verbinden zweimal zu tun.)Summiere Werte mit dynamischen Gruppierungsbedingungen
Beispieldaten:
create table data (id int, location nvarchar(1), qty int, grouping tinyint)
insert into data (id, location, qty, grouping) values (1, 'A', 10, 0)
insert into data (id, location, qty, grouping) values (1, 'A', 20, 0)
insert into data (id, location, qty, grouping) values (1, 'B', 15, 0)
insert into data (id, location, qty, grouping) values (2, 'A', 5, 1)
insert into data (id, location, qty, grouping) values (2, 'B', 10, 1)
insert into data (id, location, qty, grouping) values (3, 'B', 20, 1)
Menge soll pro Standort zusammengefasst werden, wenn Gruppierung 0, sonst pro-ID.
Geschätztes Ergebnis:
1, A, 30
1, B, 15
2, null, 15
3, null, 20
Siehe SQL-Fiddle