首页 > 解决方案 > 如何在 SQL 中将四列值附加到两列中

问题描述

我想将四列值附加到两列值。请对此请求提供帮助。我尝试了以下查询,但无法实现。

select * from 
 (SELECT DISTINCT id,'A' as Name FROM emp1) tbl1 
FUll OUTER JOIN 
 (SELECT DISTINCT id,'B' as Name FROM emp2 
 UNION ALL 
 SELECT DISTINCT id,'B' as Name FROM emp3) tbl2
on tbl1.id = tbl2.id where tbl1.id IS NULL or tbl2.id IS NULL;

查询输出:

在此处输入图像描述

预期输出:

在此处输入图像描述

标签: sqlsql-server

解决方案


似乎使用VALUES表结构来反透视数据可以在这里工作:

SELECT V.ID,
       V.Name
FROM dbo.YourTable YT
     CROSS APPLY (VALUES(YT.ID1, YT.Name1), --Your table had 2 ID & Name columns, which isn't allowed.
                        (YT.ID2, YT.Name2))V(ID,Name) --I therefore assumed they were suffixed with 1 and 2.
WHERE V.ID != 'None';

虽然基于您的尝试,而不是示例数据,但您不只是在 a UNIONorUNION ALL查询之后吗?

SELECT id, 'A'
FROM emp1
UNION ALL
SELECT id, 'B'
FROM emp2
UNION ALL
SELECT id, 'C'
FROM emp3;

当然,如果你有 3 个这样的 emp 表,你也确实存在设计缺陷。


推荐阅读