2016-07-01 5 views
1

ich ein Szenario haben, wie untenZugriff auf die vorherige Zeile in ausgewählten

--source data 
departuredttm  flight_source flight_destination available_seats 
13-07-2016 04:00:00  A    B    200   
13-07-2016 08:00:00  A    B    320    
13-07-2016 08:20:00  A    B    20 

habe ich eine Lookup-Tabelle, die sagen, wie viele insgesamt Passagiere gibt es für diese Quelle und destinatin, deren Flüge verzögert und muss in zur Verfügung eingestellt Sitze in der Quelle data.lookup Tabelle ist wie folgt.

--lookup table for passenger_from_delayed_flights 
flight_source flight_destination passengers 
A    B     500   

jetzt habe ich diese 500 Passagiere in verfügbaren Plätze einzustellen, wie in Quelldaten

---output 
DepartureDttm  flight_source flight_destination AVAILABLE_SEATS  PASSENGERS_TO_ADJUST   PASSENGER_LEFT 
13-07-2016 04:00:00 A    B     200     500        300 
13-07-2016 08:00:00 A    B     320     300        20 
13-07-2016 08:20:00 A    B     20     20        0 

zunächst Passagier anpassen 500 ist, wo wir haben 200 Plätze, neben 320 Plätze stehen zur Verfügung, und wir müssen Stellen Sie 300 (500-200) Passagiere ein.

Bitte

Dank helfen

+1

Ich kann die Datumsspalte nicht gefunden ... – jarlh

+1

Wie werden die Daten bestellt? Und was sind Ihre vorhandenen Daten und das erwartete Ergebnis? – dnoeth

+0

Ich habe Passagier Wert als 500 aus einer Nachschlagetabelle andere Zeilen, die ich Daten berechnen müssen, ist auf Datum Spalte bestellt, wenn ich es aufgenommen habe. –

Antwort

1

Ihr erwartetes Ergebnis ist wahrscheinlich falsch, bereits der zweite Flug genügend Sitze hat, seine PASSENGER_LEFT sollte so -20 (oder 0).

Diese Berechnung ist auf einem laufenden Gesamt basiert:

passengers - SUM(available_seats) 
      OVER (ORDER BY departuredttm 
        ROWS UNBOUNDED PRECEDING) AS PASSENGER_LEFT 

available_seats + PASSENGER_LEFT AS PASSENGERS_TO_ADJUST