首页 > 解决方案 > 如何在具有不同时间戳的表中汇总日期

问题描述

当我问这个问题时,我在 divcode 上得到了多次点击,因为pickdate中有不同的时间戳。有没有办法让问题总结日期,以便每个部门得到 1 个值?

/*
Söker Vikt och volym Snitt
*/

select  TO_CHAR(ROUND(O08T1.pickdate),'YYYY-MM-DD') as date_1,
       O08T1.divcode,
       sum(O08T1.calcwght) as Vikt, sum(O08T1.calcvol) as Volym,
       count(*) as AntalOrder,
       avg(O08T1.calcwght) as avg_vikt,
       avg(O08T1.calcvol) as avg_Vol

from O08T1
where O08T1.pickdate >= @('Från datum',#DATE)
group by O08T1.pickdate, O08T1.divcode
order by Pickdate DESC

标签: sqloracle

解决方案


如果您想要按天分组的值,请不要使用GROUP BY pickdate,因为它会按每个瞬间分组,并且值的精度可以达到一秒。相反,GROUP BY TRUNC(pickdate)这会将值截断到一天的开始,并将同一天的所有值聚合在一起(然后,也可以TRUNC在第一行和 中使用ORDER BY):

select TO_CHAR(TRUNC(pickdate),'YYYY-MM-DD') as date_1,
       divcode,
       sum(calcwght) as Vikt,
       sum(calcvol) as Volym,
       count(*) as AntalOrder,
       avg(calcwght) as avg_vikt,
       avg(calcvol) as avg_Vol
from   O08T1
where  pickdate >= @('Från datum',#DATE)
group by TRUNC(pickdate),
         divcode
order by TRUNC(pickdate) DESC

推荐阅读