Zum Inhalt springen

Oracle - Spalten über 2 Jahre


hammerle

Empfohlene Beiträge

Ich hoffe jemand kann mir bei folgendem Problem helfen:

Wir haben eine ganz tolle Jahresumsatztabelle in dem die Jahreszahl auch schön als Spalte und die Jahreszahlen als Werte vorhanden sind.

Die Erträge der Monate sind als Spalten einzeln als VK01 bis VK12 vorhanden.

Es soll angegeben werden können die Jahreszahl, der Startmonat und ich denke mal die Laufzeit in Monaten macht am meisten Sinn.

Wie bekommt man das hin, dass man sie Summen aus zwei Jahren bildet?

Z.B Juli 2008 bis Januar 2009?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wir haben eine ganz tolle Jahresumsatztabelle in dem die Jahreszahl auch schön als Spalte und die Jahreszahlen als Werte vorhanden sind.

Ich denke das mit der tollen Tabelle war jetzt ironisch gemeint oder?

Mit einem SQL wirst Du da nicht weiterkommen. Der Ansatz mit der SP war aber schon richtig. Du brauchst einen Cursor mit dem Du immer die kompletten Zeilen Selektierst die innerhalb deiner Jahreseinschränkung liegen. In Deinem beispiel also WHERE JAHR BETWEEN 2008 AND 2009 sind zwei Datensätze als Ergebnis.

Dann musst Du in deinem Programm bei der Spalte beginnen die als Startmonat gewünscht ist und von dort aus die einzelnen Werte zusammenzählen, bis Du in der zweiten Zeile beim gewünschten Endmonat bist.

Wäre die Tabelle wirklich toll, dann wäre pro Monat ein Satz mit Datumsangabe (Als DATE datentyp) und Umsatz vorhanden und Du könntest es mit einem einfachen SQL ermitteln.

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das tollste ist ja, dass ich erst seit ein paar Tagen mit PL/SQL arbeite und gleich eine Jahresumsatzaufstellung basteln soll.

Die Tabelle sieht grob so aus:

Spalten: Jahr, vk01, vk02 -> vk12 (Für die Monate 1-12)

und haben wollen sie:

einen Variabelen monatsumsatz letztes jahr,

Variablen monatsumsatz dieses jahr,

Aufgelaufener Umsatz letztes jahr,

Aufgelaufener Umsatz dieses jahr,

Aufgelaufener Umsatz dieses Jahr Rumpf, (Jan-Jun)

Aufgelaufener Umsatz letztes Jahr, (Jul-...Variabel)

Aufgelaufener Umsatz dieses Jahr, (Jul-...Variabel)

axo und das ganze auch noch über 16 verschiedene Warengruppen hinweg ^^

Eine Abfrage habe ich schon einmal gemacht die siehr so aus:

Die anderen 16 sehen ähnlich aus.

(select 11 as veg,sum(vk&monat) as Monat_&monat,

decode(&monat,

01,

sum(vk01),

02,

(sum(vk01) + sum(vk02)),

03,

(sum(vk01) + sum(vk02) + sum(vk03)),

04,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04)),

05,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04) +

sum(vk05)),

06,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04) +

sum(vk05) + sum(vk06)),

07,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04) +

sum(vk05) + sum(vk06) + sum(vk07)),

08,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04) +

sum(vk05) + sum(vk06) + sum(vk07) + sum(vk08)),

09,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04) +

sum(vk05) + sum(vk06) + sum(vk07) + sum(vk08) +

sum(vk09)),

10,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04) +

sum(vk05) + sum(vk06) + sum(vk07) + sum(vk08) +

sum(vk09) + sum(vk10)),

11,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04) +

sum(vk05) + sum(vk06) + sum(vk07) + sum(vk08) +

sum(vk09) + sum(vk10) + sum(vk11)),

12,

(sum(vk01) + sum(vk02) + sum(vk03) + sum(vk04) +

sum(vk05) + sum(vk06) + sum(vk07) + sum(vk08) +

sum(vk09) + sum(vk10) + sum(vk11) + sum(vk12))

) as aufgelaufen

from t154wast t where jahr=&jahr and stufe=' ' and wabe='01' and (Hwgr='05' or hwgr='12' or Hwgr='25')

group by wabe

)

union all

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also in diesem Fall würde ich so vorschlagen die daten erstmal in eine vernünftige Form zu bringen. Sprich Du lässt dir vom DBA ein eigenes Schema anlegen in dem Du Tabellen erzeugst die eine korrekte Struktur haben. In deinem Beispiel wäre dann für jeden Monat eine eigene Spalte mit Datum und eine weitere Spalte mit dem Umsatz sowie ggf. noch weitere Spalten.

Dann schreibst Du dir einmalig eine Prozedur die diese Tabelle befüllt und kannst anschließend einfach per SQL auf deine Umsetztabelle zugreifen.

Damit investierst Du nur einmalig Arbeit um es richtig zu machen und kannst die restlichen Anforderungen quasi aus dem Ärmel schütteln.

Wichtig ist natürlich auch noch, dass Die Umsetztabelle mitgepflegt wird wenn sich Änderungen ergeben. das wäre z.B. über einen Trigger möglich oder falls das nicht erlaubt ist, könnte dir der DBA einen Datenbankjob einrichten, der diese Tabellen in der Nacht komplett neu aufbaut (monatliche Umsatzangaben lassen ja nicht grade auf eine sekundengenaue Datenqualität schließen)

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...