|
-
Help
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)
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
Forum Rules
|
Top DevX Stories
Easy Web Services with SQL Server 2005 HTTP Endpoints
JavaOne 2005: Java Platform Roadmap Focuses on Ease of Development, Sun Focuses on the "Free" in F.O.S.S.
Wed Yourself to UML with the Power of Associations
Microsoft to Add AJAX Capabilities to ASP.NET
IBM's Cloudscape Versus MySQL
|
Bookmarks