抱歉,我是SQL的新手。术语帮助改善我的问题标题/进一步谷歌搜索欢迎。我确定我的问题已被提出,但我无法弄清楚要搜索的内容。
问题:
备注:
所有P_Claim_Nbr都有自己的Column_2和Column_3。
我无权创建temp_tables
我没有破坏的东西(在那里获得70%):
select distinct A.Claim_Nbr, A.Column_2, A.Column_3, B.P_Claim_Nbr
from Table_A A
join Table_B B
on A.Claim_Nbr = B.Claim_Nbr
我现在的结果:
-------------------------------------------------
| Claim_Nbr | Column_2 | Column_3 | P_Claim_Nbr |
| 1A | data1 | data2 | 1B |
| 2A | data3 | data4 | null |
-------------------------------------------------
我想要获得的内容:
-------------------------------------------------
| Claim_Nbr | Column_2 | Column_3 | P_Claim_Nbr |
| 1A | data1 | data2 | 1B |
| 2A | data3 | data4 | null |
| 1B | data5 | data6 | null |
-------------------------------------------------
我将继续尝试不同的联接来完成这项工作,但欢迎帮助。
答案 0 :(得分:1)
如果我理解这个问题 - 我可能不会 - 我认为你可以通过UNION来实现。
--you orginal rs
SELECT A.Claim_Nbr, A.Column_2, A.Column_3, B.P_Claim_Nbr
FROM Table_A A
JOIN Table_B B ON A.Claim_Nbr = B.Claim_Nbr
UNION --get only distinct values from the combined result sets
--plus all the records form the next level deep.
SELECT A2.Claim_Nbr, A2.Column_2, A2.Column_3, NULL
FROM Table_A A
JOIN Table_B B on A.Claim_Nbr = B.Claim_Nbr
JOIN TABLE_A A2 ON B.P_Claim_Nbr = A2.Claim_Nbr
答案 1 :(得分:0)
declare @tableA table(Claim_Nbr varchar(2))
insert into @tableA
select '1A' union all
select '2A'
declare @tableB table(Claim_Nbr varchar(2), Column_2 varchar(max), Column_3 varchar(max), P_Claim_Nbr varchar(2))
insert into @tableB(Claim_Nbr, Column_2,Column_3, P_Claim_Nbr)
select '1A', 'data1', 'data2', '1B' union all
select '2A', 'data3', 'data4', null union all
select '1B', 'data5', 'data6', null
;with cte as
(
select b.*
from @tableA a
join @tableB b on a.Claim_Nbr = b.Claim_Nbr
union all
select b.*
from cte c
join @tableB b on b.Claim_Nbr = c.P_Claim_Nbr
)
select * from cte