sql full join on 两个条件 显示结果不全?

langyoujx 2015-11-14 01:40:13
用 full join 连接两个年度的销售统计表 ON A.存货编码=B.存货编码 and A.客户编码=B.客户编码
想展现给客户两个年度的销量统计数据,
结果本年销量展现正确,上年销量展现的少,想用全连接 结果实现的是左连接的效果。
select 
A.客户编码,
A.客户名称,
A.存货编码,
C.cInvName '存货名称',
C.cInvAddCode '存货代码',
C.cInvStd '规格型号',
A.销售量 '本期销售量',
A.销售额 '本期销售额',
B.销售量 '对比期销售量',
B.销售额 '对比期销售额',
case when B.销售量<>0 then (A.销售量-B.销售量)*(B.销售额/B.销售量) else 0 end '销量影响销售额',
case when B.销售量<>0 then (A.销售额/A.销售量-B.销售额/B.销售量)*A.销售量 else 0 end '售价影响销售额'
from #bqxsfp A
FULL OUTER join #snxsfp B
on
A.客户编码=B.客户编码 and A.存货编码=B.存货编码
left join inventory C on A.存货编码=c.cInvCode
where
a.存货编码=isnull(@inventorybm,a.存货编码)
and
a.客户编码=isnull(@vendorcode,a.客户编码)
order by A.销售量-B.销售量 desc
...全文
895 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
langyoujx 2015-11-17
  • 打赏
  • 举报
回复
后来自己搞明白了,我想要的需要union才能实现。。谢谢大家。
在路上_- 2015-11-16
  • 打赏
  • 举报
回复
你的where子句限定了A表字段必须满足条件
在路上_- 2015-11-16
  • 打赏
  • 举报
回复
把where子句中的条件移到join子句中试试
Yole 2015-11-16
  • 打赏
  • 举报
回复
要看一下您这两个临时表是怎么写的....
专注or全面 2015-11-15
  • 打赏
  • 举报
回复
你先别查询那么多字段,先select * ,不要任何where 条件,看结果是不是达到了,然后一步一步加条件,看看问题出在哪一步,我的意思是你自己学会调试。
langyoujx 2015-11-15
  • 打赏
  • 举报
回复
我删掉了left join 后也不行啊,难道两个条件达不到完全连接的效果么?
专注or全面 2015-11-14
  • 打赏
  • 举报
回复
你有一个left join inventory C on A.存货编码=c.cInvCode 这个left join啊

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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