根据特定列在sql server中将一行拆分为多行

RAM*_*EHA 3 sql-server

我有包含字段 id、val 的表 a 和具有字段 id、val 的相同表 b。

当我为行中的不同数据编写内部连接时

SELECT * FROM a left join b on a.id = b.id WHERE (a.id != b.id or a.val != b.val)

我越来越像下面 在此处输入图片说明

我想将此表行拆分为两行。帮我写一个查询来拆分这些数据并获得如下所示的输出表 在此处输入图片说明

帮助!

Mik*_*son 6

您可以通过使用交叉应用和表值构造函数执行逆透视来生成额外的行。

select c.id,
       c.val
from dbo.a 
  inner join dbo.b
    on a.id = b.id
  cross apply (values(a.id, a.val),
                     (b.id, b.val)) as c(id, val)
where a.val <> b.val;
Run Code Online (Sandbox Code Playgroud)