Ingo: Berechnung, wenn zwei Werte nicht NULL

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

  1. 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

    --
    Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
    Toller Dampf voraus von Terry Pratchett
  2. 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

    --
    sumpsi - posui - clusi
    1. 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?

  3. 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

    1. dann könnte ich die Werte mit TOP1 ORDER BY desc und ORDER BY esc nutzen? Wie kann ich dann aber die Werte abziehen?

      1. 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.

    2. 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