0

我有一个在 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
4

4 回答 4

1

您的描述暗示了一种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()也应该有效。

于 2018-04-13T12:16:26.800 回答
0

尝试这个:

SELECT 
    Col1, 
    Col2, 
    Col3,
    CASE WHEN Col3 IS NOT NULL THEN Col3 ELSE Col2 END AS Col4
FROM table1
于 2018-04-13T12:17:41.010 回答
0
-- this should do what you want
SELECT 
Col1, 
Col2, 
Col3,
CASE WHEN Col3 = 1 THEN Col3 ELSE Col2 END AS NewCOL
FROM table1
于 2018-04-13T12:17:41.287 回答
0
Insert into table2
select 
Col1, 
Col2, 
Col3, 
(case when col3 = 1 then 1 else col2 end) as col4
FROM table1
于 2018-04-13T12:25:21.710 回答