Benutzer mit den meisten Antworten
Differenz 2er Datensätze

Frage
-
Hallo
ich möchte gerne eine Differenz ermitteln zwischen einem Datensatz und dem vorherigen Datensatz.
Ich habe jetzt mal mit der Row_number gebastelt. Es läuft zwar, aber ich bin mir nicht sicher, ob es noch etwas besseres gibt.
Würdet ihr es genauso lösen oder anders?
WITH rsc
AS
(
select a.id, a.nid, a.leistung,ROW_NUMBER() OVER(ORDER BY a.id desc) AS Row
from daten as a
where a.nID = 2
)
select rsc.id, rsc.nID, rsc.leistung, rsc.leistung-a.leistung as differenz
from rsc
left join (select id,nid, leistung,ROW_NUMBER() OVER(ORDER BY id desc) AS Row
from daten where nID=2 )as a
on rsc.Row = a.Row-1id nID leistung differenz
----------- ----------- ----------- -----------
4 1 80 30
3 1 50 10
2 1 40 10
1 1 30 NULL
Liebe Grüße, die Luzie!
Antworten
-
Hallo Luzie,
ist völlig ok so, nur die derivative table kannst Du sparen, da sie identisch mit der CTE ist, also einfach die verwenden:
WITH rsc
AS
(
select a.id, a.nid, a.leistung
,ROW_NUMBER() OVER(ORDER BY a.id desc) AS Row
from daten as a
where a.nID = 2
)
select rsc.id, rsc.nID, rsc.leistung
, rsc.leistung-a.leistung as differenz
from rsc
left join
rsc as a
on rsc.Row = a.Row - 1
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de- Als Antwort markiert Luzie Donnerstag, 8. Juli 2010 07:55
Alle Antworten
-
Hallo Luzie,
ist völlig ok so, nur die derivative table kannst Du sparen, da sie identisch mit der CTE ist, also einfach die verwenden:
WITH rsc
AS
(
select a.id, a.nid, a.leistung
,ROW_NUMBER() OVER(ORDER BY a.id desc) AS Row
from daten as a
where a.nID = 2
)
select rsc.id, rsc.nID, rsc.leistung
, rsc.leistung-a.leistung as differenz
from rsc
left join
rsc as a
on rsc.Row = a.Row - 1
Olaf Helper ----------- * cogito ergo sum * errare humanum est * quote erat demonstrandum * Wenn ich denke, ist das ein Fehler und das beweise ich täglich http://olafhelper.over-blog.de- Als Antwort markiert Luzie Donnerstag, 8. Juli 2010 07:55