Autor Beitrag
g1o2k4
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: So 24.08.08 22:23 
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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: 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:
ausblenden SQL-Anweisung
1:
2:
SELECT     id, wert, wert / dbo.GetLast(id) AS xxx
FROM         dbo.tab


Function GetLast:

ausblenden 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

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.
g1o2k4 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 493



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 779
Erhaltene Danke: 1

Vista, XP, W2K
Delphi, .Net, Deutsch und Englisch
BeitragVerfasst: 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.

ausblenden 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

_________________
Wir, die guten Willens sind, geführt von Ahnungslosen, Versuchen für die Undankbaren das Unmögliche zu vollbringen.
Wir haben soviel mit so wenig so lange versucht, daß wir jetzt qualifiziert sind, fast alles mit Nichts zu bewerkstelligen.