Können Sie eine DB2-WITH-Anweisung verwendet werden, als Teil einer UPDATE-oder MERGE?

Ich aktualisieren müssen einige Zeilen einer DB-Tabelle. Wie ich das identifizieren der zu aktualisierenden Zeilen wurden eine Reihe von komplizierten Aussagen, und ich es geschafft, Kochen Sie Sie nach unten, um eine Reihe von Aussagen. Jetzt habe ich die richtigen Daten Werte, die ich brauche, um die Tabelle zu aktualisieren.

Seit ich es geschafft, diese Werte mit einer WITH-Anweisung, ich hatte gehofft, um es in den UPDATE/MERGE. Ein Vereinfachtes Beispiel folgt:

with data1
(
    ID_1
)
as
(
    Select ID
    from  ID_TABLE
    where ID > 10
)
,
cmedb.data2
(
     MIN_ORIGINAL_ID
    ,OTHER_ID
)
as
(
    Select min(ORIGINAL_ID)
           ,OTHER_ID
    from   OTHER_ID_TABLE
    where  OTHER_ID in
    (
        Select distinct ID_1
        From   data1
    )
    group by OTHER_ID

)
select MIN_ORIGINAL_ID
      ,OTHER_ID
from cmedb.data2

Nun habe ich die beiden Spalten mit Daten, ich möchte Sie zu benutzen, um die Tabelle aktualisiert. Anstatt also die select an der Unterseite, ich habe versucht, alle möglichen Kombinationen zu mergen und updates, einschließlich der mit der WITH-Anweisung über das UPDATE/MERGE, oder als Teil der UPDATE - /MERGE-Anweisung. Das folgende ist das, was dem am nächsten kommt, in meinem Geist, was ich tun will:

merge into ID_TABLE as it
using
(
    select MIN_ORIGINAL_ID
          ,OTHER_ID
    from cmedb.data2

) AS SEL
ON
(
    it.ID = sel.OTHER_ID
)
when matched then
update
set it.ORIGINAL_ID = sel.MIN_ORIGINAL_ID

So funktioniert es nicht. Ich bin mir nicht sicher, ob dies überhaupt möglich ist, wie ich gefunden habe, keine Beispiele auf dem internet MIT Anweisungen in Kombination mit der UPDATE-oder MERGE. Ich habe Beispiele MIT Anweisungen verwendet wird, in Verbindung mit FÜGEN, glauben, so könnte es möglich sein.

Wenn jemand helfen kann, würde es groß sein, und bitte lassen Sie mich wissen, wenn ich habe keinerlei Informationen, die nützlich sein würde, um das problem zu lösen.

Disclaimer: das Beispiel, Das ich habe ist ein eingekocht version von dem, was ich versuche zu tun, und kann nicht wirklich einen Sinn!

InformationsquelleAutor Clarkey | 2011-02-01

Schreibe einen Kommentar