簡體   English   中英

檢查列值並更新同一表中的另一個列值

[英]Check column value and update another column value from same table

我有 2 個表表 A 和表 B。根據連接表 A 和表 B 的某些條件,我將值插入表 C。

在表 C 中,我通過使用 insert into select 查詢來插入值。 假設表 C 有 4 列,我的第 2 列值取決於第 1 列值,即,如果第 1 列值 <0,則將第 2 列值插入為“F”或“T”。 那么如何通過計算同一表中第 1 列的值將值插入第 2 列。

架構:

INSERT INTO #TableC
SELECT
    B.STORE AS WS_AUTH_STR,
    (CASE
        WHEN (B.DATE /17) = substring(cast([A_EXT_AUTH_CD] as varchar(10)),1, 4) THEN (B.DATE /17)
        WHEN (B.DATE /17) = substring(cast([A_EXT_AUTH_CD] as varchar(10)),2, 5) THEN (B.DATE /17)
        WHEN (B.DATE /17) = substring(cast([A_EXT_AUTH_CD] as varchar(10)),3, 6) THEN (B.DATE /17)
        WHEN (B.DATE /23) = substring(cast([A_EXT_AUTH_CD] as varchar(10)),1, 4) THEN (B.DATE /23)
        WHEN (B.DATE /23) = substring(cast([A_EXT_AUTH_CD] as varchar(10)),2, 5) THEN (B.DATE /23)
        WHEN (B.DATE /23) = substring(cast([A_EXT_AUTH_CD] as varchar(10)),3, 6) THEN (B.DATE /23)
        ELSE A_AUTH_CD
     END) AS WS_AUTH_AUTH_CODE,
     COLUMN N
FROM TableA A
INNER JOIN TableB B ON A.STORE = B.STORE;

為了插入到列 N,首先我需要檢查 WS_AUTH_AUTH_CODE 值。 如果是 (B.DATE /17),則在此列中插入 1,否則插入 2。

您可以使用 CASE 來實現您的要求。 選擇語句如下-

INSERT INTO....
....
SELECT A.Some_column AS Column_1,
CASE 
    WHEN A.Some_column = 0 THEN 'F' 
    ELSE 'T' 
END AS Column_2
FROM Some_table A

暫無
暫無

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

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