34,591
社区成员
发帖
与我相关
我的任务
分享
lxpbs8851 方法改成这样可行:
----------
select a.序号,ISNULL(b.内容,C.内容) as A表,(CASE WHEN B.内容=C.内容 THEN C.内容 END) B表
from
(select 序号 from TBA
union
select 序号 from TBB) a
left join TBA b on a.序号=b.序号
left join TBB c on a.序号=c.序号
---结果
/*
序号 A表 B表
----------- ---- ----
1 A A
2 B NULL
3 C NULL
4 D NULL
5 E E
6 F NULL
7 G G
(7 行受影响)
create table tba(序号 int,内容 varchar(4))
insert into tba(序号,内容)
select 1,'A' UNION SELECT 2,'B' UNION SELECT 3,'C' UNION SELECT 5,'E' UNION SELECT 7,'G'
CREATE TABLE TBB(序号 int,内容 varchar(4))
insert into TBB(序号,内容)
select 1,'A' UNION SELECT 4,'D' UNION SELECT 5,'E' UNION SELECT 6,'F' UNION SELECT 7,'G'
---
SELECT * FROM tba
SELECT * FROM TBB
-------查询,生成C表
;WITH
DD AS(
SELECT TA.序号,TB.内容
FROM (SELECT 序号 FROM tba UNION SELECT 序号 FROM TBB) TA LEFT JOIN TBA TB
ON TA.序号=TB.序号
)
SELECT A.序号,ISNULL(A.内容,B.内容) A表
,(CASE WHEN A.内容=B.内容 THEN B.内容 END) B表
FROM DD A LEFT JOIN TBB B
ON A.序号=B.序号
/*结果
序号 A表 B表
----------- ---- ----
1 A A
2 B NULL
3 C NULL
4 D NULL
5 E E
6 F NULL
7 G G
(7 行受影响)
select 序号=isnull(A.序号,B.序号),A.内容,B.内容
from A ,B where A.序号=B.序号
select a.[[序号],b.[内容] as [A表内容],c.[内容] as [B表内容]
from
(select [序号] from tableA union select [序号] from tableB) a
left join tableA b on a.[序号]=b.[序号]
left join tableB c on a.[序号]=c.[序号]
select 序号=isnull(A.序号,B.序号),A.内容,B.内容
from A full join B on A.序号=B.序号