AFE-GmdG JLI MVP
Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 31.01.2007, 16:37 Titel: T-SQL Frage |
|
|
Tja - da bin ich mal wieder mit einer schwierigen Aufgabe, die ich schnellstmöglich für meine Arbeit lösen muss.
Ich brauche mit Hilfe einer SQL-Abfrage Differenzwerte zu einer Vorgängergröße. Genauer gesagt habe ich in einer Datentabelle absolute Kennzahlen für Objekte zu verschiedenen Zeitständen zu stehen und benötige jetzt in EINER SQL-Abfrage die Kennzahlendifferenzen zum vorherigen Zeitstand.
Datentabelle:
Code: | ID ObjektID Zeitstand Kennzahl1 Kennzahl2 ...
1 1 Jan 2000 12 3,4
2 1 Feb 2000 8 4,1
3 1 Mar 2000 11 3,9
4 1 Apr 2000 13 3,7
5 2 Jan 2000 22 -2,4
6 2 Feb 2000 21 -1,7
7 2 Mar 2000 22 -0,5
8 2 Apr 2000 24 0,2
|
Ich Suche jetzt 8 Zeilen Ergebnis welche mir für
Code: | Objekt 1:
12, -4, 3, 2 / 3.4, 0.7, -0.2, -0.2
Objekt 2:
22, -1, 1, 2 / -2.4, 0.7, 1.2, 0.7
| liefert...
Um dieses Ergebnis zu bekommen, muss ich also die Tabelle mit sich selbst Joinen und im Vergleich einen Sinnvollen Weg finden, die ObjektID und den Zeitstand vernünftig zu vergleichen.
Code: | SELECT
Aktuell.ID,
Aktuell.ObjektID,
Aktuell.Zeitstand,
'VerlaufKennzahl1' = Aktuell.Kennzahl1 - ISNULL(Vorgänger.Kennzahl1, 0),
'VerlaufKennzahl2' = Aktuell.Kennzahl2 - ISNULL(Vorgänger.Kennzahl2, 0)
FROM
Tabelle AS Aktuell
LEFT OUTER JOIN
Tabelle AS Vorgänger
ON
(
[...]
)
ORDER BY
Aktuell.ObjektID,
Aktuell.Zeitstand
|
Zumindest Eine Bedingung ist schonmal klar:
Aktuell.Zeitstand > Vorgänger.Zeitstand
Dies gibt mir aber noch zu viele Ergebniszeilen zurück, nämlich z.B. die Differenz zwischen ID 4 und ID 1 _________________
CPP: | float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;} |
|
|