Unterschiedliche Detaillevel im Report

Herausforderung: Ein Report soll unterschiedliche Detaillevel anzeigen.

Die Beispiel-Tabelle:

drop table fs_t1;
create table fs_t1
(
ddd number,
ddd_vgl number,
wert_B number,
wert_S number,
ziel number
);
insert into fs_t1 values (1, 1, 10, 15, 20);
insert into fs_t1 values (2, 2, 20, 25, 31);
insert into fs_t1 values (2, 12, 20, 25, 32);
insert into fs_t1 values (3, 13, 30, 35, 40);
insert into fs_t1 values (3, 3, 30, 35, 40);
commit;

select ddd, ddd_vgl,wert_B, wert_S, ziel from fs_t1;

DDD DDD_VGL WERT_B WERT_S ZIEL
---------- ---------- ---------- ---------- ----------
1 1 10 15 20
2 2 20 25 31
2 12 20 25 32
3 13 30 35 40
3 3 30 35 40

5 rows selected.


Zu DDD 2 gibt es zwei unterschiedliche Vergleichs-DDD's mit unterschiedlichen Zielwerten - für diese sollen eigene Ergebniszeilen angezeigt werden.
Zu DDD 3 gibt es ebenfalls zwei unterschiedliche Vergleichs-DDD's, jedoch mit identischen Zielwerten - für diese soll eine gemeinsame Ergebiszeile angezeigt werden.

Die Aggregation auf DDD und Zielwert liefert:

select ddd, sum(wert_b) wert_b, sum(wert_s) wert_s, ziel from fs_t1 group by ddd, ziel;

Ergebnis:
DDD WERT_B WERT_S ZIEL
---------- ---------- ---------- ----------
3 60 70 40
1 10 15 20
2 20 25 31
2 20 25 32

4 rows selected.


Für den Report werden beide Abfragen miteinander verbunden:

select * from
(select ddd, ddd_vgl,wert_B, wert_S, ziel from fs_t1) A,
(select ddd, sum(wert_b) wert_b, sum(wert_s) wert_s, ziel from fs_t1 group by ddd, ziel) B
where A.DDD = B.DDD
and A.ziel = b.ziel;

Ergebnis:
DDD DDD_VGL WERT_B WERT_S ZIEL DDD_1 WERT_B_1 WERT_S_1 ZIEL_1
---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------
3 3 30 35 40 3 60 70 40
3 13 30 35 40 3 60 70 40
1 1 10 15 20 1 10 15 20
2 2 20 25 31 2 20 25 31
2 12 20 25 32 2 20 25 32

5 rows selected.


Mit dem Join über DDD und Zielwert erhält man das gewünschte Ergebnis: Für DDD 2 gibt es unterschiedliche Ergebniswerte, für DDD3 werden zweimal die selben Ergebniswerte gezeigt.

Kommentare

Beliebte Posts aus diesem Blog

PGA unter Oracle 11g

trunc(sysdate) - nette Spiele mit dem Datum

Datapump - Verzeichnis erstellen