有主表和子表进行联合查询,当主表出现重复数据时,除了相同那列,其它设为空字符串或者0,请高手指点,谢谢,急急
有主表和子表进行联合查询,当主表出现重复数据时,除了相同那列,其它设为空字符串或者0,请高手指点,谢谢,急急
有表A(A.id, A.Amount, A.TotLR)
子表B(B.Aid, B.DGName, B.Money)
其中B.Aid = A.id
要求对两表进行综合数据查询,查询得到的数据,如果A表中的Amount和TotLr如有重复则为0。
假设有数据如下:
A(1,1000,100)
A(2,2000,200)
A(3,3000,300)
B(1,张山,100)
B(1,李算,100)
B(1,王二,100)
B(2,张山,200)
B(2,李算,200)
B(2,王二,200)
B(3,张山,300)
B(3,李算,300)
B(3,王二,300)
select A.id, A.Amount, A.TotLR, B.DGName, B.Money FROM B INNER JOIN A ON B.Aid = A.id
其查询结果如下:
1,1000,100,张山,100
1,0,0,李算,100
1,0,0,王二,100
2,2000,200,张山,200
2,0,0,李算,200
2,0,0,王二,200
3,3000,300,张山,300
3,0,0,李算,300
3,0,0,王二,300
如何写正确的查询语句才能得到我要的数据,请高手指点,多谢!!
------解决方案--------------------;with f as
(
select select A.id, A.Amount, A.TotLR, B.DGName, B.Money FROM B INNER JOIN A ON B.Aid = A.id
)
select
id,
case when px=1 then A.Amount else 0 end as Amount,
case when px=1 then A.TotLR else 0 end as TotLR,
DGName,[Money]
from
(select px=row_number()over(partition by id order by getdate()),* from f) as t