求教一个sql写法
表A 表B
客户 商品 客户 付款
客户A 商品A 客户A 1000
客户A 商品B 客户B 2000
客户A 商品C
客户B 商品A
客户B 商品D
客户C 商品B
客户C 商品C
客户C 商品E
想要得出如下结果:
客户 商品 付款
客户A 商品A 1000
客户A 商品B
客户A 商品C
客户B 商品A 2000
客户B 商品D
客户C 商品B
客户C 商品C
客户C 商品E
求教要如何写?
------解决方案--------------------思路
1)每个客户给个序号
2)left join 通过客户+序号
------解决方案--------------------
select a.客户, a.商品,isnull(b.付款 ,'') as 付款
from 表A a left join
(
select x.客户,MIN(x.商品) as 商品,y.付款 from 表A x ,(select 客户,付款 from 表B) y
where x.客户=y.客户
group by x.客户,y.付款
) b on a.客户=b.客户 and a.商品=b.商品