TSQL - 从一列中创建两列的 CASE

TSQL - CASE to create two columns out of one

对于这个简化的 table 结构(参见 fiddle),我需要删除为同一 ID 输出的第二行。单个 ID 的行值可能仅为“1”。

    CREATE TABLE lookup 
    (
     id int, 
     field varchar(20), 
     row varchar(20),
     value varchar(50)
    );

INSERT INTO lookup
(id,field, row, value)
VALUES
(1,'55', '1', '1XYZ'),
(1,'55', '2', '2XYZ'),
(2,'55', '1', '3XYZ');


CREATE TABLE output 
    (
     id int, 
     value_1 varchar(50),
     value_2 varchar(50)
    );

INSERT INTO output
(id, value_1, value_2)
VALUES
(1, '1XYZ', '2XYZ'),
(2, '3XYZ', null);


-- wrong
select id
,case when (field = 55 and row = 1) then value END AS value_1
,case when (field = 55 and row = 2) then value END AS value_2
from lookup;

希望你能告诉我怎么做。

谢谢。

只需将聚合添加到您的查询:

select id
,max(case when (field = 55 and row = 1) then value END) AS value_1
,max(case when (field = 55 and row = 2) then value END) AS value_2
from lookup
group by id;

Demo here