Operator WITH ROLLUP używa się w połączeniu z GROUPBY. Czasami istnieje potrzeba grupowania wyników po dwóch kolumnach. Wyobraźmy sobie, że mamy tabelę lub widok zawierający listę sprzedanych produktów. Będziemy mieli zatem takie kolumny jak “nazwa produktu”, “nazwa sklepu w którym został sprzedany produkt” oraz “typ produktu”. Przykładowe zapytanie wyglądałoby więc następująco:
select StoreName,ProductType,sum(Number) from SoldProducts GROUP BY StoreName,ProductType
Zapytanie zwróci produkty pogrupowanie wzgędem sklepu oraz typu:
StoreName | ProductType | Suma |
SklepA | komputery | 1 |
SklepA | spożywka | 3 |
SklepB | komputery | 4 |
SklepB | spożywka | 6 |
Po wynikach wiemy jaka grupa produktów sprzedaje się najlepiej w danym sklepie. Za pomocą WITH ROLLUPP możemy dowiedzieć się również ile sztuk produktu zostało sprzedanych w danym sklepie, niezależnie od jego typu:
select StoreName,ProductType,sum(Number) from SoldProducts GROUP BY StoreName,ProductType WITH ROLLUP
StoreName | ProductType | Suma |
SklepA | komputery | 1 |
SklepA | spożywka | 3 |
SklepB | komputery | 4 |
SklepB | spożywka | 6 |
SklepA | NULL | 4 |
SklepB | NULL | 10 |
NULL | NULL | 14 |
Jak widać, WITH ROLLUP spowodował dodanie hierarchicznych wierzy z NULL. Wiadomo, teraz ile ogólnie zostało sprzedanych produktów oraz ile w poszczególnych sklepach.