WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 23.07.2007, 11:00   #1
kingchaos01
Veteran
 
Registriert seit: 30.09.2000
Beiträge: 267


Standard SQL Zeilendifferenzen

Hallo!
Ich habe einige SQL-Tabellen, etwa folgenden Aufbaus:

Code:
feld1 feld2
1     2
2     2,4
3     3,2
4     4,5
...
Ich bräuchte nun die Differenz zwischen den Zeilen in einer neuen Spalte, also etwa so:

Code:
feld1 feld2 Diff
1     2     0
2     2,4   0,4
3     3,2   0,8
4     4,5   1,3
...
Geht das in SQL oder muss ich das über eine Schleife rundherum lösen?
fragt sich
roland
kingchaos01 ist offline   Mit Zitat antworten
Alt 23.07.2007, 20:03   #2
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

select feld1, feld2, (feld2 - feld1) as diff from irgendwo

pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 23.07.2007, 20:54   #3
kingchaos01
Veteran
 
Registriert seit: 30.09.2000
Beiträge: 267


Standard

Und wie heißt's so schön: Wer lesen kann, ist klar im Vorteil!
kingchaos01 ist offline   Mit Zitat antworten
Alt 23.07.2007, 20:58   #4
pong
Inventar
 
Benutzerbild von pong
 
Registriert seit: 25.12.2000
Alter: 41
Beiträge: 9.063

Mein Computer

pong eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von kingchaos01
Und wie heißt's so schön: Wer lesen kann, ist klar im Vorteil!
google nutzen auch

http://www.adp-gmbh.ch/ora/sql/inser..._subquery.html

pong
____________________________________
\"Ein Gewitter reinigt die Luft\", sagte der Mann, nachdem ein Blitz seine Frau erschlug

Nicht klicken!


Erstposteralarm/Beschwerde/Kummerkasten


Verplattet
pong ist offline   Mit Zitat antworten
Alt 23.07.2007, 21:40   #5
The_Lord_of_Midnight
Gesperrt
 
Registriert seit: 26.10.1999
Beiträge: 19.154

Mein Computer

Standard

Beschreibe genauer, von wo die Differenz genau berechnet werden soll.
Denn die Differenz zwischen 1 und 2 ist nicht 0.
The_Lord_of_Midnight ist offline   Mit Zitat antworten
Alt 23.07.2007, 22:40   #6
kingchaos01
Veteran
 
Registriert seit: 30.09.2000
Beiträge: 267


Standard

Nicht böse sein, aber wie soll man das noch genauer beschreiben: Die Differenz zwischen zwei aufeinanderfolgenden Zeilen?

Zwischen 2 und 2,4 ist 0,4 Differenz.
Zwischen 2,4 und 3,2 ist 0,8 Differenz.
...
...
...
Zeile(n) - Zeile(n-1)
kingchaos01 ist offline   Mit Zitat antworten
Alt 23.07.2007, 22:46   #7
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

klar geht das, aber kompliziert... aber vielleicht weiß ja jemand einen einfachen weg
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Alt 24.07.2007, 08:42   #8
The_Lord_of_Midnight
Gesperrt
 
Registriert seit: 26.10.1999
Beiträge: 19.154

Mein Computer

Standard

Zitat:
Original geschrieben von kingchaos01
Nicht böse sein, aber wie soll man das noch genauer beschreiben: Die Differenz zwischen zwei aufeinanderfolgenden Zeilen?
Man könnte es klarer formulieren.
Warum bringst du da 2 Felder ?
Was meinst du GENAU mit der Differenz ?
Differenz zwischen was ?

Man kann erst an einer Problemlösung arbeiten, wenn man eine klare Problembeschreibung hat.

Meinst du das so:
Zeile1: Feld1+Feld2=Summe1
Zeile2: Feld1+Feld2=Summe2
Zeile3: Feld1+Feld2=Summe3

Differenz Zeile1 = Summe 1 - Summe 2 ?
Differenz Zeile2 = Summe 2 - Summe 3 ?
The_Lord_of_Midnight ist offline   Mit Zitat antworten
Alt 24.07.2007, 08:51   #9
kingchaos01
Veteran
 
Registriert seit: 30.09.2000
Beiträge: 267


Standard

ok, vergiss einmal Feld1. Das hab ich drin, weil es ja eine Reihenfolge der Zeilen geben muss. Ich will ja nicht die Differenz zwischen Zeile1 und Zeile7 berechnen, sondern schön hintereinander Zeile2 minus Zeile1, Zeile3 minus Zeile2, Zeile4 minus Zeile3 usw.
eben wie beschrieben Zeile(n) minus Zeile(n-1).

Und die Differenz ist das Ergebnis einer Subtraktion (sagt die Wikipedia).

Wer MatLab kennt, kennt vielleicht den Befehl "diff".
Gernau das auf SQL bezogen.
Weil hier offenbar auf genaue Definitionen Wert gelegt wird, hier noch eine Begriffsbestimmung, wie MatLab das sieht:

"Y = diff(X) calculates differences between adjacent elements of X.

If X is a vector, then diff(X) returns a vector, one element shorter than X, of differences between adjacent elements:

[X(2)-X(1) X(3)-X(2) ... X(n)-X(n-1)]"

es grüßt
Roland
kingchaos01 ist offline   Mit Zitat antworten
Alt 24.07.2007, 09:30   #10
void
Hero
 
Benutzerbild von void
 
Registriert seit: 26.07.2001
Ort: Wien
Beiträge: 811


Standard

ich denke nicht, dass sql zeilenbasiert - wie von dir gewünscht - arbeiten kann.

du kannst dir den effekt aber selber zusammenbauen:
lese 1.zeile, merk dir den wert des gewünschten feldes, lese nächste zeile und wende dein diff auf das vorher gemerkte feld und das gewünschte feld dieser zeile an und speichere das ergebnis als neues feld...

wenn man geschickt ist, bekommt man das hin (in einem statement)
____________________________________
nobody is perfect
void ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:05 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag