我有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。
您可以使用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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。