Hallo,
ich habe in einer Tabelle ein bis und ein saldo. Nun möchte ich in einer Zeile die beiden Werte und die Werte des Vormonats ausgeben. Im Feld bis ist immer der Monatsultimo angegeben. Soweit habe ich das auch hinbekommen, allerdings wird der erste Monat nicht ausgegeben, da logischerweise kein Vormonat vorhanden ist.
Es handelt sich hier um postgresql 7.3.4 - dürfte aber egal sein, dass müsste mit Standard-SQL lösbar sein ...
Ich könnte mein Ziel erreichen, indem ich die Anweisung and vormonat.bis = a.bis - date_part('day',a.bis)::integer in der FROM-Klausel an JOIN-Bedingung notiere und nicht in WHERE - allerdings geht dadurch die Performence total runter. Eine Unterabfrage scheidet auch aus, da es sich nur um einen Teil eines größeren Konstrukts handelt - habe ich getestet, Performence geht wie oben beschrieben in den Keller.
Wenn ich das in der WHERE-Klausel lösen könnte, wäre das optimal - habe ich für einen Fall mit einem festen Wert getestet. Ein einfaches or vormonat.id is null hilft auch nicht weiter - und jetzt bin ich am Ende - hat jemand einen Vorschlag?
ich habe in einer Tabelle ein bis und ein saldo. Nun möchte ich in einer Zeile die beiden Werte und die Werte des Vormonats ausgeben. Im Feld bis ist immer der Monatsultimo angegeben. Soweit habe ich das auch hinbekommen, allerdings wird der erste Monat nicht ausgegeben, da logischerweise kein Vormonat vorhanden ist.
Code:
select a.bis, a.saldo, vormonat.bis, vormonat.saldo from tbl_abschluss a left outer join tbl_abschluss vormonat on a.ma_id = vormonat.ma_id where a.ma_id =1 and vormonat.bis = a.bis - date_part('day',a.bis)::integer order by a.bis desc
Ich könnte mein Ziel erreichen, indem ich die Anweisung and vormonat.bis = a.bis - date_part('day',a.bis)::integer in der FROM-Klausel an JOIN-Bedingung notiere und nicht in WHERE - allerdings geht dadurch die Performence total runter. Eine Unterabfrage scheidet auch aus, da es sich nur um einen Teil eines größeren Konstrukts handelt - habe ich getestet, Performence geht wie oben beschrieben in den Keller.
Wenn ich das in der WHERE-Klausel lösen könnte, wäre das optimal - habe ich für einen Fall mit einem festen Wert getestet. Ein einfaches or vormonat.id is null hilft auch nicht weiter - und jetzt bin ich am Ende - hat jemand einen Vorschlag?