Entwickler-Ecke

Datenbanken - SQL Abfrage - Werte aus 2 zeilen verrechnen/vergleichen


g1o2k4 - So 24.08.08 22:23
Titel: SQL Abfrage - Werte aus 2 zeilen verrechnen/vergleichen
hi

ich bin ziemlich neu bei sql und habe folgendes problem. ich möchte werte von je 2 zeilen vergleichen und verrechnen.
ich möchte die werte aus der ersten spalte (also zeile1 item1 / zeile2 item1) nehmen und durcheinander teilen, das ergebnis soll gespeichert werden...dann soll die nächste spalte genommen werden (zeile1 item2 / zeile2 item2), beide werte werden wieder durcheinander geteilt und das ergebnis zum letzten gespeicherten teilungsergebnis addiert.
so dass ich am ende als ergebnis die summe der teilungsergebnisse der einzelnen spalten der beiden zeilen bekomme.

ich weiß auch gar nicht wie ich ansetzen soll.


ene - Mo 25.08.08 08:42

Moin,

Ob man das mit einer View hinbekommt, weiß ich grad nicht, ansonsten gehts mit einer SP. In der Regel kann man dafür eine Unterabfrage verwenden, aber das hängt auch von deinen Daten ab. Als Beispiel:


Edit: Weils vermutlich die sicherere Variante ist:

View:

SQL-Anweisung
1:
2:
SELECT     id, wert, wert / dbo.GetLast(id) AS xxx
FROM         dbo.tab


Function GetLast:


SQL-Anweisung
1:
2:
3:
4:
5:
6:
7:
8:
CREATE FUNCTION dbo.GetLast (@ID As Int)
RETURNS Int  AS  
BEGIN 
  DECLARE @MaxID As Int  
  SET @MaxID = (SELECT Max(ID) FROM dbo.tab WHERE ID < @ID)

  RETURN (SELECT Wert FROM dbo.tab WHERE id = @MaxID)
END


g1o2k4 - Mo 25.08.08 12:12

ich glaub das ist für die performance nicht so gut.
ist es nicht möglich die komplette frage in ein statement zu packen ?


ene - Mo 25.08.08 12:28

Glauben kann man Sonntags von 9-12 ;) Im SubSelect ein SubSelect funktioniert IMHO nicht. Wenn deine Daten aber eine gute Integrität bieten, kann man das auch mit einem SubSelect erledigen.


SQL-Anweisung
1:
2:
3:
SELECT id, wert, wert / (SELECT TOP 1 PERCENT wert FROM dbo.tbl As Q WHERE Q.id < dbo.tbl.id) As xxx
FROM dbo.tbl
ORDER BY id