联合所有Sql查询-如何绑定三个表

联合所有Sql查询-如何绑定三个表,sql,db2,union,union-all,Sql,Db2,Union,Union All,我有以下表格: T1 T2 T3 我想把它作为输出 ID PRIORITY SERVICE/DEVICE 1 1 PSTN 1 1 ADSL 1 1 BSC1 2 1 3 2 ADSL 3 2 BSC7 如何使用UNIONALL绑定这些表?我还必须为T1WHERE优先级设置WHERE子句=4 一个id的输出表中的总数应为T2+T3的汇总(对于id=12+1=3),

我有以下表格:

T1

T2

T3

我想把它作为输出

ID  PRIORITY SERVICE/DEVICE
1      1        PSTN
1      1        ADSL
1      1        BSC1
2      1
3      2        ADSL
3      2        BSC7
如何使用UNIONALL绑定这些表?我还必须为T1
WHERE优先级设置WHERE子句=4

一个id的输出表中的总数应为T2+T3的汇总(对于id=12+1=3),但对于id=2,它也应存在于表输出中,第二列为空


谢谢

如果您可以只使用
联合
而不使用
联合所有
这将满足您的需求

SELECT t1.Id, t1.Priority, COALESCE(t2.Service, '') AS [Service/Device]
FROM t1
LEFT JOIN t2 ON t1.Id = t2.Id
WHERE t1.Priority != 4

UNION 

SELECT t1.Id, t1.Priority, COALESCE(t3.Device, '') AS [Service/Device]
FROM t1
LEFT JOIN t3 ON t1.Id = t3.Id
WHERE t1.Priority != 4

如果您可以只使用
联合
而不使用
联合所有
这应该会满足您的需求

SELECT t1.Id, t1.Priority, COALESCE(t2.Service, '') AS [Service/Device]
FROM t1
LEFT JOIN t2 ON t1.Id = t2.Id
WHERE t1.Priority != 4

UNION 

SELECT t1.Id, t1.Priority, COALESCE(t3.Device, '') AS [Service/Device]
FROM t1
LEFT JOIN t3 ON t1.Id = t3.Id
WHERE t1.Priority != 4

谢谢您的回复…我会很快尝试,但您确定我会得到重复的ID值,因为这是我想要的吗?对于ID 2,我会在服务/设备列中得到null或空白输出吗?Blank更合适,但我在Fiddle中看到有null?@Dejan我已经更新了我的答案,为您返回Blank而不是null。请让我知道这是否是您想要的输出谢谢回复…我会很快尝试,但您确定我会得到重复的ID值,因为这是我想要的吗?对于ID 2,我会在服务/设备列中得到null或空白输出吗?Blank更合适,但我在Fiddle中看到有null?@Dejan我已经更新了我的答案,为您返回Blank而不是null。请让我知道这是否是你想要的输出
ID  PRIORITY SERVICE/DEVICE
1      1        PSTN
1      1        ADSL
1      1        BSC1
2      1
3      2        ADSL
3      2        BSC7
SELECT t1.Id, t1.Priority, COALESCE(t2.Service, '') AS [Service/Device]
FROM t1
LEFT JOIN t2 ON t1.Id = t2.Id
WHERE t1.Priority != 4

UNION 

SELECT t1.Id, t1.Priority, COALESCE(t3.Device, '') AS [Service/Device]
FROM t1
LEFT JOIN t3 ON t1.Id = t3.Id
WHERE t1.Priority != 4
select T1.id , T1.PRIORITY ,T2.SERVICE  as service/Device from  t1 
left outer join T2 on T2.id=T1.id where T1.PRIORITY!=4
union all
select T1.id , T1.PRIORITY ,T3.DEVICE as service/Device from  t1 
left outer join T3 on T3.id=T1.id where PRIORITY!=4