Matrix oder Union All. Brauche dringend Hilfe

netbimbo

Grünschnabel
Hallo zusammen,

wer kann mir weiterhelfen? ich dreh hier noch bald am rad. mein problem liegt darin, aus der tabelle gutschein mehrere spalten nebeneinander darzustellen. ihr seht unten im select, dass ich 2 spalten selecte. wunderbar. so soll das auch sein - jedoch sollen jetzt noch 2 spalten daneben. genau die gleichen spalten jedoch mit einem anderen datum (01.06.08 - 30.06.08). da es natürlich vorkommen kann, dass ich im juni mehr filialen habe als im mai sollen die noch fehlenden filialen im mai dann NULL sein.

ich versuche euch das einmal darzustellen:

Filialen Mai 08 Anzahl GS Mai 08 Filialen Juni 08 Anzahl GS Juni 08
20 100 20 118
30 115 30 120
35 NULL 35 176
41 165 41 100


Hier der Select:
select gs_kst as "Filialen Mai 08", COUNT(gs_datum) as "Anzahl GS Mai 08"
from gutschein
where gs_datum between '01.05.08' and '31.05.08'
and gs_kst between '1' and '20'
group by gs_kst


ich hoffe ihr könnt mir weiterhelfen. wird das mit einer matrix oder doch besser mit einem union all gemacht? es wäre sehr nett wenn ihr mir den select dann hier einmal posten könntet. für 2 monate sollte das reichen. dann kann ich den rest selbst anpassen.

vielen dank schon einmal im vorraus.

gruß netbimbo
 
Hallo netbimbo,

jede SQL Query definiert eine fixe Anzahl von Spalten. Ein Möglichkeit, um Spalten dynamisch anwachsen zu lassen, ist mir nicht bekannt.

Deine resultierende Tabelle könnte aber so aussehen:
HTML:
| Monat   | kst | gs |
----------------------
| Januar  | ..  | .. |
| Februar | ..  | .. |
| März    | ..  | .. |
...
 
Hi,
also wir haben hier eine fixe anzahl von spalten gegeben. das sind 12 (1 geschäftsjahr -> Gs_Mai bis Gs_April). Ich habe es auch schon hinbekommen. Mit einem Union All haut das wunderbar hin. Jedoch ist mir das noch nicht dynamisch genug, da das datum immer noch fest codiert wird.

Hier einmal mein Probleml:
Code:
select  filiale, sum(Mai), sum(Juni)
from
(
    select gs_kst filiale, COUNT(gs_datum) mai, 0 juni
    from gutschein
    where gs_datum between '01.05.08' and '31.05.08'
    and gs_kst between '1' and '20'
    group by gs_kst
UNION ALL
    select gs_kst filiale, 0 mai, COUNT(gs_datum) juni
    from gutschein
    where gs_datum between '01.06.08' and '30.06.08'
    and gs_kst between '1' and '20'
    group by gs_kst
)
group by filiale
Ich bräuchte also an dieser Stelle eine dynamische Berechnung des Datums!


Code:
 | KST | GS Mai | .. | GS November |
---------------------------------------------------
 |  1  |   25   | .. |      0      |
 |  2  |   29   | .. |      0      |
 |  9  |   89   | .. |      0      |

So soll es dann später aussehen!


Es gibt auch eine Stammtabelle wo der Anfang jedes Geschäftsjahres drin steht:

Anfang und Ende stehen dort drin.

Beispiel:
Anfang: 01.05.08
Ende: 30.04.09
 
Zuletzt bearbeitet:
Zurück