我有一个在SQL中看起来像这样的数据集。
Col1 Col2 Col3
A 4 1
B 5 NULL
C 6 1
D 7 NULL
E 8 NULL
如果 Col2 = 1,如何将 Col2 中的值与 Col3 中的值一起添加新列,或者将现有值保留在 Col2 中。
最终预期产出:
Col1 Col2 Col3 Col4
A 4 1 1
B 5 NULL 5
C 6 1 1
D 7 NULL 7
E 8 NULL 8
我尝试了合并功能,但我认为这不起作用:
SELECT
Col1,
Col2,
Col3,
coalesce(Col3, Col2) AS Col4
FROM table1
您的描述提出了一个case
表达式:
select . . .
(case when col3 = 1 then col3 else col2 end) as col4
您也可以将上述内容表示为
select . . .
(case when col3 = 1 then 1 else col2 end) as col4
对于您提供的数据,coalesce()
也应该有效。
试试这个:
SELECT
Col1,
Col2,
Col3,
CASE WHEN Col3 IS NOT NULL THEN Col3 ELSE Col2 END AS Col4
FROM table1
-- this should do what you want
SELECT
Col1,
Col2,
Col3,
CASE WHEN Col3 = 1 THEN Col3 ELSE Col2 END AS NewCOL
FROM table1
Insert into table2
select
Col1,
Col2,
Col3,
(case when col3 = 1 then 1 else col2 end) as col4
FROM table1