开发者社区> 问答> 正文

检查列值并更新同一表中的另一个列值

我有2个表Table A和TableB。基于将表A和表B连接起来的某些条件,我正在将值插入表C。

在表C中,我通过使用insert插入select查询中来插入值。假设表C有4列,我的第二列值取决于第一列的值,即,如果列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。

展开
收起
祖安文状元 2020-01-04 15:48:28 553 0
1 条回答
写回答
取消 提交回答
  • 您可以使用CASE实现您的要求。select语句如下-

    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

    2020-01-04 15:48:36
    赞同 展开评论 打赏
问答分类:
C++
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载