2017-04-07 4 views
1

Ich möchte eine gespeicherte Prozedur erstellen, die den Wert für Current Flag auf Y oder N durch Vergleichen der Werte von C1 und C2 aktualisiert und die letzte auf Y und das ältere N setzt. In der Ergebnismenge unten, Zeile 1 und 2 haben die gleichen Werte für C2 und C2, also möchte ich das aktuelle Flag für das jüngste als Y und für das ältere N setzen. Zeile 3 in der unteren Ergebnismenge hat kein Duplikat, also will ich es Y. sagenAktualisiere Wert für Flag-Spalte

10 12 9 1985-06-10  NULL 
10 12 60 2015-09-10  NULL 
3 5 23 2001-09-10  NULL 
1 1 96 2010-09-10  NULL 
1 1 71 2016-09-10  NULL 
+1

Bitte kennzeichnen Sie Ihre Frage mit der Datenbank, die Sie verwenden. –

Antwort

0

Sie diese in Standard-SQL tun können, eine korrelierte Unterabfrage mit:

update t 
    set flag = (case when date = (select max(date) from t t2 where t2.c1 = t.c1 and t2.c2 = t.c1) 
        then 'Y' else 'N' 
       end); 

Bestimmte Datenbanken haben möglicherweise alternative Methoden, aber dies sollte in jeder Datenbank funktionieren.

+0

Vielen Dank Gordon, das hat den Job für mich erledigt. –

Verwandte Themen