can u please make this query simpler..its using 12 months and using 12 select
statements


SELECT kund.id, kund.name, kund.strasse,kund.landid,kund.plz,kund.ort,
a.monat, a.Anzahl, NVL( SUM(a.umsatz) / 1000, 0) ,
b.monat, b.Anzahl, NVL(SUM(b.umsatz) / 1000 , 0 ),
c.monat, c.Anzahl, NVL(SUM(c.umsatz) / 1000, 0 ),
d.monat,d.Anzahl, NVL(SUM(d.umsatz) / 1000, 0 ),
e.monat,e.Anzahl, NVL(SUM(e.umsatz) / 1000, 0 ),
f.monat,f.Anzahl, NVL(SUM(f.umsatz) / 1000, 0 ),
g.monat,g.Anzahl, NVL(SUM(g.umsatz) / 1000, 0 ),
h.monat,h.Anzahl, NVL(SUM(h.umsatz) / 1000, 0 ),
i.monat,i.Anzahl, NVL(SUM(i.umsatz) / 1000, 0 ),
j.monat,j.Anzahl, NVL(SUM(j.umsatz) / 1000, 0 ),
k.monat,k.Anzahl, NVL(SUM(k.umsatz) / 1000, 0 ),
l.monat,l.Anzahl, NVL(SUM(l.umsatz) / 1000, 0 )
FROM
( SELECT kun.i_kunde_refid id, kun.c_name name, kun.c_strasse strasse,
kun.c_landid landid, kun.c_plz plz, kun.c_ort ort
FROM SYSADM.kunde kun
WHERE kun.i_firm_refid = 1
AND kun.i_verband BETWEEN 0 AND 99999
AND kun.i_kunde_refid BETWEEN 0 AND 99999 ) kund ,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'YYYY')) jahr, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum)) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 1
GROUP BY bel.i_kunde_refid,TO_NUMBER( TO_CHAR(d_belegdatum,'YYYY'))
,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) a ,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,'YYYY'))
jahr,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum)) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 2
GROUP BY bel.i_kunde_refid,TO_NUMBER( TO_CHAR(d_belegdatum,'YYYY'))
,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) b,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,'YYYY'))
jahr, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum )) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 3
GROUP BY bel.i_kunde_refid,TO_NUMBER( TO_CHAR(d_belegdatum,'YYYY'))
,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) c,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'yyyy')) jahr, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR',d_belegdatum)) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 4
GROUP BY bel.i_kunde_refid, TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) d,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'yyyy')) jahr, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum)) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 5
GROUP BY bel.i_kunde_refid,TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) e,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'yyyy')) jahr,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum )) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 6
GROUP BY bel.i_kunde_refid, TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) f,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'yyyy')) jahr, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum)) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 7
GROUP BY bel.i_kunde_refid, TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) g,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'yyyy')) jahr,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum )) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'

AND TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))= 2003
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM'))= 8
GROUP BY bel.i_kunde_refid, TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) h,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'yyyy')) jahr, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum )) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 9
GROUP BY bel.i_kunde_refid, TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
,TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) i,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR',d_belegdatum )) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 10
GROUP BY bel.i_kunde_refid,TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) j,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'yyyy')) jahr, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum )) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 11
GROUP BY bel.i_kunde_refid,TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM'))) k,
( SELECT bel.i_kunde_refid kundeid, TO_NUMBER( TO_CHAR(d_belegdatum,
'yyyy')) jahr, TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy')) monat,
COUNT( * ) Anzahl,
SUM( Waehrung_Umrechnen(bel.i_firm_refid,
bel.dec_nettosumme,
bel.c_waehrung, 'EUR', d_belegdatum )) umsatz
FROM SYSADM.vk_beleg bel, SYSADM.kunde kun
WHERE bel.i_firm_refid = 1
AND kun.i_firm_refid = 1
AND bel.i_kunde_refid = kun.i_kunde_refid
AND bel.si_belegstufe = 5
AND bel.c_auftragsart = 'S'
AND bel.d_belegdatum BETWEEN '01-Mar-2003' AND '31-Mar-2003'
AND TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) = 12
GROUP BY bel.i_kunde_refid, TO_NUMBER( TO_CHAR(d_belegdatum, 'yyyy'))
, TO_NUMBER( TO_CHAR(d_belegdatum, 'MM')) ) l
WHERE a.kundeid(+) = kund.id
AND b.kundeid(+) = kund.id
AND c.kundeid(+) = kund.id
AND d.kundeid(+) = kund.id
AND e.kundeid(+) = kund.id
AND f.kundeid(+) = kund.id
AND g.kundeid(+) = kund.id
AND h.kundeid(+) = kund.id
AND i.kundeid(+) = kund.id
AND j.kundeid(+) = kund.id
AND k.kundeid(+) = kund.id
AND l.kundeid(+) = kund.id
GROUP BY kund.id, kund.name, kund.strasse,kund.landid,kund.plz,kund.ort
,
a.monat,a.Anzahl,b.monat ,b.Anzahl,c.monat ,c.Anzahl,
d.monat,d.Anzahl,e.monat ,e.Anzahl,f.monat ,f.Anzahl,
g.monat,g.Anzahl,h.monat ,h.Anzahl,i.monat ,i.Anzahl,
j.monat,j.Anzahl,k.monat ,k.Anzahl,l.monat ,l.Anzahl
ORDER BY 1 ASC ,7 DESC;



TABLESTABLE - KUNDE
-----------
I_FIRM_REFID NUMBER
I_KUNDE_REFID NUMBER(9)
I_KUNDENID NUMBER(9)
I_ILN_NUMMER NUMBER(17)
C_SUCHE CHAR(15)
C_TITEL CHAR(40)
C_NAME CHAR(40)
C_NAME2 CHAR(40)
C_NAME3 CHAR(40)
C_STRASSE CHAR(50)
C_LANDID CHAR(3)
C_PLZ CHAR(10)
C_ORT CHAR(40)
C_ZUSATZ CHAR(40)
C_TEL CHAR(20)
C_TEL2 CHAR(20)
C_TEL3 CHAR(20)
C_TEL4 CHAR(20)
C_TELEFAX CHAR(20)
C_EMAIL CHAR(100)
C_ZAHLZIEL CHAR(5)
I_VALUTA NUMBER(4)
DEC_SKONTO NUMBER(4,2)
SI_TAGE NUMBER(3)
SI_NTAGE NUMBER(3)
C_LIEFERBEDINGUNG CHAR(5)
I_REGION NUMBER
C_USTIDNR CHAR(15)
DEC_KREDITLIMIT NUMBER(13,2)
C_LIEFERSPERRE CHAR(1)
C_AUFTRAGSSPERRE CHAR(1)
C_FORDERUNGSEINZUG CHAR(1)
SI_PREISLISTE NUMBER(6)
DEC_RABATT NUMBER(4,2)
C_STEUERPFLICHTIG CHAR(1)
C_BRUTTO_NETTO CHAR(1)
C_BUCHUNGS_KZ CHAR(2)
D_GEBURTSTAG DATE
C_ANSCHREIBEN CHAR(1)
C_TELEFONKUNDE CHAR(1)
I_KONTO NUMBER(9)
SI_MAHNUNG NUMBER(1)
SI_MAXMAHNUNG NUMBER
C_WAEHRUNG CHAR(5)
SI_STUFE NUMBER(1)
I_VERBAND NUMBER(9)
C_MITGLIEDSNUMMER CHAR(15)
C_SACHBEARBEITER CHAR(3)
C_SPRACHE CHAR(3)
D_KUNDE_SEIT DATE
C_EG_SCHLUESSEL CHAR(2)
C_EG_PERSONENKREIS CHAR(1)
C_WARENANNAHME_MO CHAR(30)
C_WARENANNAHME_DI CHAR(30)
C_WARENANNAHME_MI CHAR(30)
C_WARENANNAHME_DO CHAR(30)
C_WARENANNAHME_FR CHAR(30)
C_WARENANNAHME_SA CHAR(30)
C_WARENANNAHME_SO CHAR(30)
I_SAMMEL_KZ NUMBER
C_STEUERID CHAR(15)
C_ABC_KENNUNG1 CHAR(1)
C_ABC_KENNUNG2 CHAR(1)
C_ABC_KENNUNG_ALT1 CHAR(1)
C_ABC_KENNUNG_ALT2 CHAR(1)
I_X0 NUMBER
I_Y0 NUMBER
SI_ANZ_AUSD_0 NUMBER
SI_ANZ_AUSD_1 NUMBER
SI_ANZ_AUSD_2 NUMBER
SI_ANZ_AUSD_3 NUMBER
SI_ANZ_AUSD_4 NUMBER
SI_ANZ_AUSD_5 NUMBER
C_DELKREDERE CHAR(1)
I_TOURENNUMMER NUMBER
C_PLZ_POSTFACH CHAR(10)
C_POSTFACH CHAR(15)
C_BRIEFANREDE CHAR(100)


vk_Beleg
----------
I_FIRM_REFID NOT NULL NUMBER
DEC_BELEGNUMMER NOT NULL NUMBER(15)
I_FILIALNUMMER NOT NULL NUMBER
I_KASSE NUMBER
SI_BELEGSTUFE NUMBER(1)
C_BELEGART NOT NULL CHAR(3)
C_AUFTRAGSART NOT NULL CHAR(3)
D_BELEGDATUM DATE
C_PROJEKTNUMMER CHAR(25)
I_KUNDE_REFID NOT NULL NUMBER(9)
C_ANSPRECHPARTNER CHAR(50)
C_BESTELLER CHAR(40)
C_BESTELLART CHAR(20)
C_ZEICHEN CHAR(30)
C_AUFTRAGSNR_KUNDE CHAR(35)
C_KOMMISSIONS_NR CHAR(35)
C_AKTIONSNUMMER CHAR(35)
I_LIEF_ADRESS_ID NUMBER
I_RECH_ADRESS_ID NUMBER
C_FAHRGESTELLNUMME CHAR(17)
I_KM_STAND NUMBER(6)
C_LIEFERBEDINGUNG NOT NULL CHAR(5)
C_LIEFER_FREITEXT CHAR(70)
DEC_FRACHTFREIGRENZE NUMBER(8,3)
D_LIEFERDATUM_TAG DATE
SI_LIEFERDATUM_KW NUMBER(2)
SI_LIEFERDATUM_KW2 NUMBER(2)
SI_LIEFERDATUM_JAHR NUMBER(4)
SI_LIEFERDATUM_JAHR2 NUMBER(4)
D_LIEFERDATUM_TAG_ORG DATE
I_TOURENNUMMER NUMBER
C_ZAHLZIEL NOT NULL CHAR(5)
DEC_SKONTO NUMBER(5,2)
SI_TAGE NUMBER(3)
SI_NTAGE NUMBER(3)
I_VALUTA NUMBER(3)
D_VALUTA DATE
C_BEMERKUNG CHAR(45)
C_SACHBEARBEITER NOT NULL CHAR(3)
F_GEWICHT FLOAT(126)
F_VOLUMEN FLOAT(126)
SI_PREISLISTE NUMBER(6)
C_WAEHRUNG CHAR(5)
DEC_KURS NUMBER(15,6)
DEC_BELEGSUMME NUMBER(12,2)
DEC_FREMDBETRAG NUMBER(12,2)
DEC_NETTOSUMME NUMBER(12,2)
DEC_ERTRAG NUMBER(12,2)
SI_VERTRETERANZAHL NUMBER(6)
D_AENDERUNG DATE
D_DRUCKDATUM DATE
C_DRUCKFLAG NOT NULL CHAR(1)
C_DRUCKFLAG2 NOT NULL CHAR(1)
SI_DRUCKFLAG2 NOT NULL NUMBER
C_UEBERGABE_FIBU CHAR(1)
D_UEBERGABE_FIBU DATE
C_ABGERUFEN CHAR(1)
D_ABRUFDATUM DATE
DEC_ABRUFSUMME NUMBER(12,2)
DEC_OP_BELEGNUMMER NUMBER(15)
C_OFFEN CHAR(1)
DEC_SUMME_OFFEN NUMBER(12,2)
DEC_ANZAHLUNG NUMBER(12,2)
C_MAHNEN CHAR(1)
SI_STUFE NOT NULL NUMBER(1)
D_MAHN_DATUM DATE
C_BESTANDSFUEHRUNG_AKTIV CHAR(1)
DEC_AUFTRAGSNR NUMBER(15)
C_BRUTTO_NETTO CHAR(1)
C_AENDERBAR CHAR(1)
C_ARCHIV CHAR(1)