Wie lautet die richtige Syntax in Sybase SQL, um ein Update mit einem Self-Join durchzuführen? Z.B. vorausgesetzt, Sie das unten stehende Tabelle (#tmptbl) haben:Sybase SQL-Update mit Self-Join
account | client |amount | date
-------------------------------------
ACT1 | CLIENTA | 12 |2010-12-30
ACT2 | CLIENTB | 5 |2010-12-30
ACT1 | CLIENTA | 17 |2010-12-31
ACT2 | CLIENTB | 6 |2010-12-31
ich die Beträge, die auf 2010-12-31 mit den Mengenwerten von 2010-12-30 überschrieben werden soll.
Ich fühle mich wie so etwas wie dieses zu schreiben:
update old
set old.amount = new.amount
from #tmptbl old, #tmptbl new
where
/*filter old*/
old.account = 'ACT1'
and old.date = '2010-12-30'
and old.client = 'CLIENTA'
/* self-join new and old*/
and old.account = new.account
and old.client = new.client
/* filter new */
and new.date = '2010-12-31'
Aber es sieht nicht wie Sybase einen Alias in der ‚aktualisieren <>‘ akzeptiert Klausel. Was ist der richtige Weg, dies zu tun?
Danke!
Ist das, warum, wenn ich "set.amount = old.amount von # tmptbl alt, #tmptbl new" ich habe "Warnung: Mehrdeutige Tabelle zum Aktualisieren; Verwenden der in der update-Klausel angegebenen Tabelle."? – naumcho
Sehr nützlich, danke! –