ROLL UP – kolejność pól w nawiasie?



W tym poście ćwiczyłem rozwiązanie zadania metodą prób i błędów. Zadanie i dane wsadowe do zadania są w poście powyżej.

Tutaj po raz drugi wklejam kwerendy A oraz B, gdzie występuje grupowanie  oraz klauzula ROLLUP, a klauzula ROLLUP obejmuje dwa pola. Jedyna różnica pomiędzy A i B to kolejność pół w klauzuli ROLLUP, żadnych innych różnic a patrząc na wyniki widać wyraźnie, iż uzyskany zestaw wierszy jest wyraźnie inny. Różnice zilustrowałem Marcinie na obrazku i opisałem na obrazku.

Zobacz na obrazki, tak będzie łatwiej, ponoć dobry obrazek jeden lepszy niż tysiąc słów.

Pozdrawiam,

W.

-- A
select

case
  when grouping(to_char(data_umowy,'YYYY'))=0 then 'grupuję po roku'
  else 'nie grupuję po roku' end grouping_na_rok_transakcji

, to_char(data_umowy,'YYYY') rok_transakcji

, case
   when grouping(region)=0 then 'grupuję po regonie'
   else' nie grupuję po regionie' end grouping_na_regionie

, region
, sum(kwota_transakcji) suma -- funkcja agregująca
, count(*) liczba -- funkcja agregująca
from transakcje

group by rollup (  to_char(data_umowy,'YYYY')  , region  )

order by 2 , 4 ;


-- B
select


case
  when grouping(to_char(data_umowy,'YYYY'))=0 then 'grupuję po roku'
  else 'nie grupuję po roku' end grouping_na_rok_transakcji

, to_char(data_umowy,'YYYY') rok_transakcji

, case
   when grouping(region)=0 then 'grupuję po regonie'
   else' nie grupuję po regionie' end grouping_na_regionie

, region
, sum(kwota_transakcji) suma -- funkcja agregująca
, count(*) liczba -- funkcja agregująca

from transakcje


group by rollup  (  region  , to_char(data_umowy,'YYYY') )
order by 2 , 4 ;



Brak komentarzy:

Prześlij komentarz