用不同列中的值替换列中的值
Replace Value in Column with Value in Different Column
我在 SQL 中有一个看起来像这样的数据集。
Col1 Col2 Col3
A 4 1
B 5 NULL
C 6 1
D 7 NULL
E 8 NULL
如果 Col3 = 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
我在 SQL 中有一个看起来像这样的数据集。
Col1 Col2 Col3
A 4 1
B 5 NULL
C 6 1
D 7 NULL
E 8 NULL
如果 Col3 = 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