SQL-如何在特定日期获取项目的总和?

SQL-如何在特定日期获取项目的总和?,sql,oracle,date,sum,Sql,Oracle,Date,Sum,我正在写这段代码,并试图获得商店层面上过去日期的库存总量。现在 SELECT --STR_NBR "Store", --DAY_DATE "Date", b.whse_prod_vendor_nbr, PLN_NBR, sum(LO_IOH_UNITS) FROM MSS_OWNER.FCT_IOH_DAY_STR_PLN a, dim_prod_pln b, dim_period c, dim_location d WHERE a.prod_id = b.prod_id

我正在写这段代码,并试图获得商店层面上过去日期的库存总量。现在

SELECT 
  --STR_NBR "Store",
  --DAY_DATE "Date",
  b.whse_prod_vendor_nbr,
  PLN_NBR,
  sum(LO_IOH_UNITS)
FROM MSS_OWNER.FCT_IOH_DAY_STR_PLN a, dim_prod_pln b, dim_period c, dim_location d
WHERE a.prod_id = b.prod_id
  and a.per_id = c.per_id
  and a.loc_id = d.str_nbr
  and DAY_DATE >= to_date ('1/19/2017','MM/DD/YYYY')
  and (LO_IOH_UNITS) >0
  --and str_nbr in ()
  --and PLN_NBR in ('40000230913')
  and b.whse_prod_vendor_nbr in ('040683')
GROUP BY 
  -- STR_NBR,
  --DAY_DATE,
  b.whse_prod_vendor_nbr,
  PLN_NBR,
我确实得到了这个代码的答案,但是总数是错误的。如果我在“选择和分组”部分中包含Day_date,它将给出每年的总和。我只在过去的日子里需要它。如果我不包括日期,它给我的那一年的总数是错误的

WHSE_PROD_VENDOR_NBR    PLN_NBR SUM(LO_IOH_UNITS)
40683   40000321572 1424
40683   40000323671 63
40683   40000376695 613
40683   40000377705 192146
40683   40000907206 227
40683   40000943394 295018
如果我包括日期,就会发生这种情况

Date    WHSE_PROD_VENDOR_NBR    PLN_NBR SUM(LO_IOH_UNITS)
2017-01-20 00:00:00 40683   40000321572 204
2017-01-24 00:00:00 40683   40000321572 202
2017-01-19 00:00:00 40683   40000321572 204
2017-01-23 00:00:00 40683   40000321572 204
2017-01-21 00:00:00 40683   40000321572 204
2017-01-22 00:00:00 40683   40000321572 204
2017-01-25 00:00:00 40683   40000321572 202

我不需要所有年份的数据,只需要一年的数据。有人有解决办法吗

“…某一日期某一项目的总和。”。。。“过去的日期。”。。。“我不想要所有年份的数据,只想要一年的数据”。。。在您尝试的查询中,您没有选择一个特定年份或特定日期的条件,您有
=
。没有办法帮助您确定您的需求到底是什么。请检查您编写的内容并进行编辑,使其在逻辑上与自身保持一致(或在结尾处解释您真正需要的内容-我无法理解)。是的,您不应将日期包括在group by中,您可以在where子句中添加日期,方法是使用两个日期之间的、、,,,看起来您有一个维度模型来处理库存跟踪。问题是,你的IOH_单位的粒度定义是什么。有几种方法可以对库存进行建模。最简单的方法之一是使用“现有数量”。这就是所谓的半加性事实。我们可以按产品或地点,而不是按日期,对借据单位进行汇总。例如,如果昨天的现存量是10,而今天的现存量是10,那么你不能将它们加起来说现存量是20。