该数据库有数千个单独的项目,每个项目都有多个首次销售日期和按周销售的结果。我需要在销售的前12周内为每种产品计算总额。
当我们使用SUM知道开始日期时,代码用于以前的个别查询(CASE。这太过于手动,但有数千种产品需要审核,我们正在寻找一种智能方法来加快这一点。
我可以在此基础上找到最小的第一个购物日期,然后总结接下来的12周结果吗?如果是这样,我该如何构建它,还是有更好的方法?
数据库中的列我需要引用样本数据
PROD_ID | WEEK_ID | STORE_ID | FIRST_SHOP_DATE | ITM_VALUE
12345543 | 201607 | 10000001 | 201542 | 24356
12345543 | 201607 | 10000002 | 201544 | 27356
12345543 | 201608 | 10000001 | 201542 | 24356
12345543 | 201608 | 10000002 | 201544 | 27356
32655644 | 201607 | 10000001 | 201412 | 103245
32655644 | 201607 | 10000002 | 201420 | 123458
32655644 | 201608 | 10000001 | 201412 | 154867
32655644 | 201608 | 10000002 | 201420 | 127865
答案 0 :(得分:2)
您可以这样做:
select itemid, sum(sales)
from (select t.*, min(shopdate) over (partition by itemid) as first_shopdate
from t
) t
where shopdate < first_stopdate + interval '84' day
group by id;
您没有指定数据库,因此使用ANSI标准语法。日期操作(特别是)因数据库而异。
答案 1 :(得分:0)
嗨Kirsty,试试这个 -
select a.Item,sum(sales) as totla
from tableName a JOIN
(select Item, min(FirstSoldDate) as FirstSoldDate from tableName group by item) b
ON a.Item = b.Item
where a.FirstSoldDate between b.FirstSoldDate and (dateadd(day,84,b.FirstSoldDate))
group by a.Item
谢谢:)