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 展开
批号 日期
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 展开
2个回答
展开全部
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句子,结果就正确了。你试一下。
(
(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的表都存在一个相同的列名称,需要指明是哪个表中的列。
展开全部
在后面继续加啦看效果呗,其实你可以考虑将其当成两张表来查询
如:
前面几张表关联成一张表,然后插入临时表
将需要统计的又查询成一张表,插入临时表
最后两张临时表关联查询就可以得到结果
先查询,在关联也是挺好的
如:
前面几张表关联成一张表,然后插入临时表
将需要统计的又查询成一张表,插入临时表
最后两张临时表关联查询就可以得到结果
先查询,在关联也是挺好的
追问
继续后面家个JOIN 前面的数据SUM错了 不知道咋回事
追答
分步做处理,如果所有的都写在一起不利于排错,你可以一步步的关联
或者你把你的修改下,改成先group by 然后将group by后的当成一张表来关联,这样会减少错误的发生
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询