Temat: [Oracle] Kolumny obliczające przedziałami tygodniowymi

Witam,
Nie wiem jak uzyskać raport w którym sumowanie będzie rozbite na kolejne kolumny z przedziałami od poniedziałku do niedzieli z nagłówkami 2014.12.08-2014.12.14 itd.


Obrazek

Temat: [Oracle] Kolumny obliczające przedziałami tygodniowymi

Pierwsze co przychodzi mi na myśl to:
1. napisanie zapytania, które wykona COUNT, SUM, AVG itd, wyliczając odpowiednio ilość spraw, wartość, średnią wartość na sprawę itd.. dla całego zbioru
2. dodanie przedziału czasowego w warunku WHERE (data BETWEEN) zdefiniowanego w kolumnie D, by uwzględnić przedziały czasowe
3. skopiować 7-m takich zapytań zmieniając tylko przedział czasowy (z kolejnych kolumn z datą). Każde zapytanie możesz rozróżnić poprzez dodanie na końcu lisy SELECT stałej np idZapytania przyjmującej wartość 1 dla pierwszego zapytania, 2 dla drugiego zapytania itd. Sztuczne identyfikatory mogą być pomocne przy tworzeniu nagłówków z datami.
4. skleić te zapytania UNION ALL

Po wykonaniu tych kroków dane uzyskasz w poziomie, a potrzebne są w pionie - to uzyskasz za pomocą jakiegoś klucza i JOIN-a. W tym momencie w nagłówku nie ma jeszcze dat (ale można to wykonać za pomocą JOIN z przedziałami czasowymi).

Czy raport ma być cykliczny - wtedy takie rozwiązanie odpada.
Czy jest jakieś zasada do wyznaczania dat wstawianych w nagłówku (zazwyczaj jest to tydzień, ale nie zawsze)?
Łukasz Kurowski

Łukasz Kurowski Usque Ad Finem

Temat: [Oracle] Kolumny obliczające przedziałami tygodniowymi

Wygląda jak pivot. Niektóre bazy danych mają wbudowane "ficzersy" do robienia takich zapytań.
Oracle tego nie ma, a przynamniej kiedyś nie miał i trzeba samemu kombinować. Np.

select count( case when data between X and Y then 1 else null)
...
...
from
...
group by

konto usunięte

Temat: [Oracle] Kolumny obliczające przedziałami tygodniowymi

http://www.oracle.com/technetwork/articles/sql/11g-piv...

Temat: [Oracle] Kolumny obliczające przedziałami tygodniowymi

Może się przydać grupowanie po przedziale czasowym: http://markhoxey.wordpress.com/2012/12/25/time-interva...

Następna dyskusja:

[Oracle 10g] Zamiana dynami...




Wyślij zaproszenie do