首页 新闻 会员 周边 捐助

sql 统计 求和

0
悬赏园豆:60 [已关闭问题] 关闭于 2010-02-03 13:21

 select b.Prodid b.ProdNo,b.ProdName,b.ProdUnit,b.OrderPrice,b.Quantity
from SP_OrderMaster a inner join SP_OrderDetails b on a.ID=b.OrderID where
a.SendID in (select ID from SP_SendMaster where 1=1 and
(convert(varchar(10),SendDate,102) between convert(varchar(10),cast('2010-01-18 ' as datetime),102)
and convert(varchar(10),cast('2010-1-18' as datetime),102))) and 1 = 1

这句语句是对的 但是 我要求b.Prodid 为相同时 b.OrderPrice 的总和 b.Quantity的总和

怎么改 

问题补充: 表 SP_SendMaster ID 编号ID (为表SP_OrderMaster 的SendID) SendDate 配送日期 表 SP_OrderMaster ID 编号ID (为表SP_OrderDetails的OrderID)SendID配送单ID(为表SP_SendMaster 的ID) 表 SP_OrderDetails ID 编号ID OrderID订单ID (为表OrderMaster 的ID) ProdID商品ID ProdNo货号 ProdUnit单位 OrderPrice订购价 Quantity订购数量 ProdName名称 表 SP_SendMaster 1 2010-01-02 ; 2 2010-01-03 ; 表 SP_OrderMaster 1 1 ; 2 2 表 SP_OrderDetails 1 1 1 sp_001 个 10.00 5 ; 2 1 2 sp_002 个 20.00 8 ; 3 1 3 sp_003 个 20.00 5 ; 4 2 1 sp_001 个 10.00 5 查询出的结果要求是 id 货号 单位 总钱数 总个数 id相同的只能有一条数据 谢谢了 !
[杭州]枫的主页 [杭州]枫 | 初学一级 | 园豆:40
提问于:2010-02-03 11:52
< >
分享
所有回答(1)
0

给点数据看看吧。

清海扬波 | 园豆:825 (小虾三级) | 2010-02-03 12:05
select b.Prodid, b.ProdNo,b.ProdName,b.ProdUnit,b.OrderPrice,b.Quantity,c.sumprc,c.sumqty from SP_OrderMaster a inner join SP_OrderDetails b on a.ID=b.OrderID inner join (select Prodid,sum(OrderPrice) as sumprc,sum(Quantity) as sumqty from SP_OrderDetails group by Prodid) c on b.Prodid=c.Prodid where a.SendID in (select ID from SP_SendMaster where 1=1 and (convert(varchar(10),SendDate,102) between convert(varchar(10),cast('2010-01-18 ' as datetime),102) and convert(varchar(10),cast('2010-1-18' as datetime),102))) and 1 = 1 写了个,没有数据测试不了,基本思路就是这样的。
支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2010-02-03 12:11
这样可以得出结果 但是 结果要求是 id 货号 单位 总钱数 总个数 id相同的只能有一条数据 还有 就是 现在这句sql是得的总和有点问题
支持(0) 反对(0) [杭州]枫 | 园豆:40 (初学一级) | 2010-02-03 12:58
select b.Prodid ,b.ProdNo,b.ProdName,b.ProdUnit,sum(b.OrderPrice) as OrderPrice,sum(b.Quantity) as Quantity from SP_OrderMaster a inner join SP_OrderDetails b on a.ID=b.OrderID where a.SendID in (select ID from SP_SendMaster where 1=1 and (convert(varchar(10),SendDate,102) between convert(varchar(10),cast('2010-01-18 ' as datetime),102) and convert(varchar(10),cast('2010-2-23' as datetime),102))) group by b.Prodid ,b.ProdNo,b.ProdName,b.ProdUnit order by b.Prodid 这是我刚做出来的
支持(0) 反对(0) [杭州]枫 | 园豆:40 (初学一级) | 2010-02-03 13:20
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册