SQL语句left join SUM where 用法

表A批号日期1012014-02-06表B批号领料数量10125表C1批号ID101200表C2完成数ID35200select表A.批号AS批号,制单日期,sum(表B... 表A
批号 日期
101 2014-02-06

表B
批号 领料数量
101 25

表C1
批号 ID
101 200

表C2
完成数 ID
35 200

select 表A.批号 AS 批号,制单日期,sum(表B.领料数量) ,SUM(表C2.完成数)
from 表A left jion 表B ON 表A.批号=表B.批号

left jion 表C on 表A.批号=表C1.批号
where 制单日期 > '2014-03-01'
group by
表A.批号,制单日期

这样的话SQL语句是错误的 应该加一句 表C1.ID=表C2.ID
不知道加在哪里 望指教 谢谢!

要求得到结果
批号 领料数 完成数
101 25 35
展开
 我来答
zyc
2014-04-09 · 知道合伙人软件行家
zyc
知道合伙人软件行家
采纳数:328 获赞数:5073
擅长数据通信、路由器组网、C++语言、数据库SQL语言、GP

向TA提问 私信TA
展开全部
select aa.批号 批号,领料数量B,领料数量C,制单日期 from
(
(select 批号,制单日期) from 表A group by 批号,制单日期) as a
left jion (select 批号,sum(领料数量) 领料数量B from 表B group by 批号) as b ON a.批号=b.批号) as aa left jion (select 批号,sum(领料数量) 领料数量C from 表C group by 批号) as c on aa.批号=c.批号
)
having 制单日期 > '2014-03-01'
你这样书写左联接SQL句子,结果就正确了。你试一下。
追问
没明白什么意思  as a  b c
aa.批号等等
追答
as  a就是把一个查询语句的结果当作一个数据库表a来使用。起别名为a、b、c、aa等,这样更加简短。
aa.批号 就是aa表的“批号”这个列,如果两个join的表都存在一个相同的列名称,需要指明是哪个表中的列。
发生等将发生
2014-04-09 · TA获得超过478个赞
知道小有建树答主
回答量:653
采纳率:75%
帮助的人:318万
展开全部
在后面继续加啦看效果呗,其实你可以考虑将其当成两张表来查询
如:
前面几张表关联成一张表,然后插入临时表
将需要统计的又查询成一张表,插入临时表
最后两张临时表关联查询就可以得到结果

先查询,在关联也是挺好的
追问
继续后面家个JOIN  前面的数据SUM错了  不知道咋回事
追答
分步做处理,如果所有的都写在一起不利于排错,你可以一步步的关联

或者你把你的修改下,改成先group by 然后将group by后的当成一张表来关联,这样会减少错误的发生
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式