hammerle Geschrieben 15. September 2009 Teilen Geschrieben 15. September 2009 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
robotto7831a Geschrieben 15. September 2009 Teilen Geschrieben 15. September 2009 Hallo, nach kurzem Überlegen würde ich es als Stored Procedure mit dynamsichen SQL lösen und in der Proc das Statement zusammenbauen. Frank Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 15. September 2009 Teilen Geschrieben 15. September 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hammerle Geschrieben 16. September 2009 Autor Teilen Geschrieben 16. September 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
dr.dimitri Geschrieben 16. September 2009 Teilen Geschrieben 16. September 2009 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
hammerle Geschrieben 17. September 2009 Autor Teilen Geschrieben 17. September 2009 Vielen Dank für eure Hilfe! Ich denke mal auch, dass ich das ganze umlegen werde. So macht das wirklich keinen Sinn. VG Christof Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.