SQL2005 求join不重复行

sankyqiu 2017-11-04 10:10:54
SQL2005 求join不重复行

表:客户表trader
traderid,tradercode,tradername
1001,A001, A客户
1002,A002, B客户
1003,C007, C客户
3007,D002, D客户
9008,K2133, F客户

视图1:vip_sale
traderid,billdate,billcde,materialid,quantity
1001,2017-11-01,BC001, 3001,8000
1001,2017-11-01,BC001, 3002,7000


视图2:vip_sreturn
traderid,hlbilldate,hlbillcde,hlmaterialid,hlquantity
1001,2017-11-02,KK001, 2001,8000
3007,2017-11-03,KK003, 7007,8099

视图3:vip_charge
traderid,amount1,amount2,amount3
1001,300,400,500
9008,271,272,273

以trader表作为源头行链接
求结果生成视图vip_tradersalesreturnchargebb
内容行不要重复
traderid,tradercode,tradername,billdate,billcde,materialid,quantity,hlbilldate,hlbillcde,hlmaterialid,hlquantity,amount1,amount2,amount3
1001 ,A001, A客户, 2017-11-01,BC001, 3001,8000 ,2017-11-02,KK001, 2001,8000,300,400 ,500
1001 ,A001, A客户, 2017-11-01,BC001, 3002,7000 ,NULL ,NULL ,NULL ,NULL,NULL,NULL,NULL
1002 ,A002, B客户, NULL,NULL, NULL,NULL ,NULL ,NULL ,NULL ,NULL,NULL,NULL,NULL
1003 ,C007, C客户, NULL,NULL, NULL,NULL ,NULL ,NULL ,NULL ,NULL,NULL,NULL,NULL
3007 ,D002, D客户,, NULL,NULL, NULL,NULL ,2017-11-03,KK003, 7007,8099,NULL,NULL,NULL
9008 ,K2133, F客户, NULL,NULL, NULL,NULL ,NULL ,NULL ,NULL ,NULL,271,272,273
...全文
232 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
红色部份就是重复了
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
引用 13 楼 z10843087 的回复:
1.确认下是不是所有的列都是需要的,你可以把不要的列去掉 2.如果是下图这种完全一样的重复,你只需要在前面加个distinct 去重就可以
distinct 试过了,还是不行!
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
请看原视图的数据 select * from vip_salesreturncharge01 where traderid=62 ---即视图vip_sale select * from vip_salesreturncharge02 where traderid=62 ---即视图vip_sreturn select * from vip_salesreturncharge03 where traderid=62 ---即视图vip_charge
OwenZeng_DBA 2017-11-05
  • 打赏
  • 举报
回复
1.确认下是不是所有的列都是需要的,你可以把不要的列去掉
2.如果是下图这种完全一样的重复,你只需要在前面加个distinct 去重就可以

sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
我上传的图片相关字段名可能跟我举例的内容有出入,但相关结构是一致的。
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
OwenZeng_DBA 2017-11-05
  • 打赏
  • 举报
回复
对,, 你现在的问题是 执行下面的这个结果有重复对吗,我的意思你执行下,下面的语句看看结果 left join vip_sale on trader.traderid=vip_sale.traderid left join vip_sreturn on trader.traderid=vip_sreturn.traderid left join vip_charge on trader.traderid=vip_charge.traderid
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
引用 6 楼 z10843087 的回复:
不是这个,是说你join之后的查询,截图看看,最好是直接在数据库中的查询,更方便看一点
是否可以加我QQ 283611008 帮忙远程看看吗?
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
引用 4 楼 z10843087 的回复:
你把现在这个查询的执行的结果发下,看下怎么重复的
我这份报表是想把3个视图拼接在一起显示 , 表trader , 视图1:vip_sale , 视图2:vip_sreturn , 视图3:vip_charge 其中表trader中traderid 是唯一性的
OwenZeng_DBA 2017-11-05
  • 打赏
  • 举报
回复
不是这个,是说你join之后的查询,截图看看,最好是直接在数据库中的查询,更方便看一点
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
有重复行的,这个是查询视图数据
OwenZeng_DBA 2017-11-05
  • 打赏
  • 举报
回复
你把现在这个查询的执行的结果发下,看下怎么重复的
sankyqiu 2017-11-05
  • 打赏
  • 举报
回复
引用 2 楼 qq_37170555 的回复:
改用inner join去连接
我试过inner join 了,但还是不行。 因为视图 视图1:vip_sale , 视图2:vip_sreturn , 视图3:vip_charge 原数据的内容行数都是不相同的。
听雨停了 2017-11-05
  • 打赏
  • 举报
回复
改用inner join去连接
sankyqiu 2017-11-04
  • 打赏
  • 举报
回复
求以 客户表trader 为源头 ,链接 视图1:vip_sale, 视图2:vip_sreturn, 视图3:vip_charge 求内容不重复, 现在用 trader left join vip_sale on trader.traderid=vip_sale.traderid left join vip_sreturn on trader.traderid=vip_sreturn.traderid left join vip_charge on trader.traderid=vip_charge.traderid 内容就有重复内容或行出现, 求方法解决!

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧