簡體   English   中英

使用 CASE 語句根據表 B 中的值更新表 A 中的列

[英]Update a column in table A based on values in table B using a CASE statement

我有一個棘手的問題。

我將有一個表A由兩列A.IDA.Cat1_Avail 目前Cat1_Avail列是空的。

我想根據一個邏輯問題更新A.Cat1Avail中的值。 特別是,我有另一個表BB.IDB.Feature組成。 B.Feature可以包含以下值: Cat1Cat2NULL

對於匹配 ID,我想在A.Cat1_Avail中插入一個 1,因為表B中的匹配記錄在B.Feature中包含值Cat1 Cat2的情況下, A.Cat1_Avail應為 0。

總之,我想根據邏輯問題更新一列(ID匹配嗎? B.Feature的內容是什么?)。

我希望這能讓事情變得清晰,而且不要太具體。

我想這個問題可以通過依次使用幾個命令來解決。 但我想要一個可以處理這個問題的命令。

使用合並來實現它,如下所示:

MERGE INTO TABLEA A USING (
                              SELECT
                                  ID,
                                  CASE FEATURE
                                      WHEN 'cat1'   THEN 1
                                      WHEN 'cat2'   THEN 0
                                  END AS CAT
                              FROM
                                  TABLEB
                          ) B ON ( A.ID = B.ID )
WHEN MATCHED THEN 
UPDATE SET A.CAT1_AVAIL = B.CAT

干杯!!

更新聲明!

UPDATE testa set testa.lvalue = (case when testb.lvalue = 'cat1' then 1 
                                        when testb.lvalue = 'cat2' then 0
                                        else null end)
    FROM testa join testb on (testa.id = testb.id)

請嘗試一下

Update a
set 
a.Cat1Avail = (case WHEN b.Feature = 'cat1' THEN 1
                    WHEN b.Feature ='cat2' THEN 0
                    ELSE NULL End)
from A a 
join B b
on a.ID= b.ID

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM