分组求和的结果不对,该如何处理
分组求和的结果不对
有条sql脚本:
求得结果:
现象:当stock_no为2条时,求得的mount结果翻倍,stock_no为1条时,求的结果正常。
请问如何求得正确结果?
------解决思路----------------------
先对A与B表进行关联GroupBy,然后把GroupBy的结果与C关联即可
------解决思路----------------------
原表原数据+期望结果
------解决思路----------------------
在处理SUM时,若是需要根据group by字段排序,则不要使用over关键字;over关键字是计算所有的和,或在over中已经分区汇总数据。
有条sql脚本:
select a.stock_no,c.arr_adress as adress,convert(varchar(10),c.over_time,120)over_time,c.c_type,b.hi_no,b.cust_no,b.lotno, sum(count(b.lotno)) over(partition by b.cust_no,b.lotno,a.stock_no)mount,convert(varchar(10),a.check_date,120)date from sgm_ch_check as a left join dfl_stock_detail as c on a.stock_no = c.po_num left join dfl_detail as b on a.packageno = b.packageno where a.stock_no like '%%' and c.arr_adress like '%%' and c.over_time like '%%' and c.c_type like '%%' and b.cust_no like '%%' and b.lotno like '%%' group by a.stock_no,c.arr_adress,convert(varchar(10),c.over_time,120), c.c_type,b.hi_no,b.cust_no,b.lotno,convert(varchar(10),a.check_date,120) order by adress,over_time,c.c_type asc
求得结果:
SUXF140616001 A1 2014-06-20 L42L BEA21-110N A1 310F6 3TS1A 4611 342 2014-06-16
SUXF140616001 A1 2014-06-20 L42L BEA21-110N A1 310F6 3TS1A 4610 810 2014-06-16
SUXF140619003 A1 2014-06-23 L42L BEA21-110N A1 310F6 3TS1A 4613 798 2014-06-19
SUXF140619003 A1 2014-06-23 L42L BEA21-110N A1 310F6 3TS1A 4612 354 2014-06-19
SUXF140619004 A1 2014-06-24 L42L BEA21-110N A1 310F6 3TS1A 4613 570 2014-06-19
SUXF140619004 A1 2014-06-24 L42L BEA21-110N A1 310F6 3TS1A 4614 582 2014-06-19
SUXF140625003 A1 2014-07-01 L42L BEA21-110N A1 310F6 3TS1A 4620 288 2014-06-25
现象:当stock_no为2条时,求得的mount结果翻倍,stock_no为1条时,求的结果正常。
请问如何求得正确结果?
------解决思路----------------------
先对A与B表进行关联GroupBy,然后把GroupBy的结果与C关联即可
------解决思路----------------------
原表原数据+期望结果
------解决思路----------------------
在处理SUM时,若是需要根据group by字段排序,则不要使用over关键字;over关键字是计算所有的和,或在over中已经分区汇总数据。