Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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

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

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

Vielen Dank für eure Hilfe!

Ich denke mal auch, dass ich das ganze umlegen werde.

So macht das wirklich keinen Sinn.

VG

Christof

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.