Berechnung, wenn zwei Werte nicht NULL
Ingo
- sql
Hallo,
ich habe eine Tabelle mit folgendem Aufbau:
Bezeichnung | Wert
___________________________
Z1 NULL
Z2 NULL
Z3 7
Z4 9
Z5 20
Z6 40
Z7 NULL
Z8 80
Z9 NULL
Ich müsste nun die Differenz von der letzten Zahl und der ersten Zahl berechnen. In diesem Fall SUM(Z8-Z3). Dies variiert ständig. Es kann sein, beim nächsten Mal ist Z1 mit einem Wert bestückt. Wie kann ich die SQL Abfrage machen, dass er die korrekten Werte findet?
Danke
Hallo
Bezeichnung | Wert ___________________________ Z1 NULL Z2 NULL Z3 7 Z4 9 Z5 20 Z6 40 Z7 NULL Z8 80 Z9 NULL
Ich müsste nun die Differenz von der letzten Zahl und der ersten Zahl berechnen. In diesem Fall SUM(Z8-Z3). Dies variiert ständig. Es kann sein, beim nächsten Mal ist Z1 mit einem Wert bestückt. Wie kann ich die SQL Abfrage machen, dass er die korrekten Werte findet?
Frage die Tabelle nach dem ersten Wert <> NULL und nach dem letzten Wert <> NULL. Begrenze die Ergebnismenge dazu auf eine Zeile und sortiere nach einem Feld (hier wohl Bezeichnung
), mit dem du „erster“ und „letzter“ definieren willst.
Wie die Abfragen aussehen, kommt auf das Datenbanksystem an (MS SQL, MySQL, etc. pp.).
Tschö, Auge
Hallo Ingo,
die null-Zeilen bekommst Du mit wert IS NOT NULL
aus der Query heraus.
Die Differenz "letzte minus erste Zahl" - hmm - geht es um die erste und letzte Zahl? Oder um die kleinste und die größte?
Rolf
es geht um die erste und letzte Zahl. Die Größe ist nicht wichtig, kann auch differenzieren.
Wie sieht solch eine Abfrage in MSSQL aus?
Hi,
Ich müsste nun die Differenz von der letzten Zahl und der ersten Zahl berechnen.
anhand welcher Sortierkriterien?
Die NULL-Werte sind ja leicht auszusortieren mit "is not null".
cu,
Andreas a/k/a MudGuard
dann könnte ich die Werte mit TOP1 ORDER BY desc und ORDER BY esc nutzen? Wie kann ich dann aber die Werte abziehen?
Tach!
dann könnte ich die Werte mit TOP1 ORDER BY desc und ORDER BY esc nutzen?
Damit kannst du die Werte erstmal ermitteln. (asc statt esc sollte das sicherlich sein.)
Wie kann ich dann aber die Werte abziehen?
Nicht in einer einzelnen einfachen Query, aber in einer Query, die die beiden Werte über je einer Subquery bekommt.
dedlfix.
im optimalfall sollte Z1-Z9 erfolgen, wenn aber Z1 IS NULL dann soll er Z2-Z9 usw... oder Z3-Z7 könnte es auch heissen, wenn Z8 und Z9 IS NULL und Z1 und Z2 auch