与条件合并(SQL Server)

时间:2015-08-16 05:30:43

标签: sql-server merge multiple-conditions

我有两个表,表A和表B具有相同的格式。我正在使用表B作为源

运行合并语句
TYPE    ITEM    QTY1    QTY2    QTY3
A       AAA     100     200     300
A       BBB     150     250     310
B       CCC     101     123     131
C       DDD     102     55      12

问题是,我只想在目标表中已存在记录时才更新特定列。这就是我想做的事情,但我似乎无法让它发挥作用。我只想知道,使用MERGE语句可以吗?

MERGE TABLE A
    USING (SELECT * FROM TABLE B) B
    ON B.TYPE = A.TYPE AND B.ITEM = A.ITEM
    WHEN NOT MATCHED THEN
        INSERT (TYPE, ITEM, QTY1, QTY2, QTY3) VALUES (B.TYPE, B.ITEM, B.QTY1, B.QTY2, B.QTY3)
    WHEN MATCHED THEN
        CASE
            WHEN 'A' : UPDATE SET A.QTY1 = B.QTY1, A.QTY2 = B.QTY2, A.QTY3 = B.QTY3
            WHEN 'B' : UPDATE SET A.QTY2 = B.QTY2 , A.QTY3 = B.QTY3
            WHEN 'C' : UPDATE SET A.QTY3 = B.QTY3
        END;

0 个答案:

没有答案