【问题标题】:Running total only returns the last entry for the month - SQL运行总计仅返回该月的最后一个条目 - SQL
【发布时间】:2021-04-22 14:08:24
【问题描述】:

例如,我有下表

Sku Date Rolling Total
SKU1 01/02/2021 10
SKU1 02/02/2021 15
SKU1 03/02/2021 7
SKU2 01/02/2021 15
SKU2 02/02/2021 18
SKU2 03/02/2021 30
SKU1 01/03/2021 7
SKU1 02/03/2021 15
SKU1 03/03/2021 18
SKU2 01/03/2021 10
SKU2 02/03/2021 30
SKU2 03/03/2021 143

我正在尝试创建一个 sql 查询,它将返回每个月的最后一条记录以及总数。像这样的

SKU Date Qty
SKU1 03/02/2021 7
SKU2 03/02/2021 30
SKU1 01/03/2021 7
SKU2 01/03/2021 10

我已经尝试了很多方法来制作这个,但我无法接近任何东西。 任何帮助都会很棒。

【问题讨论】:

标签: sql sql-server


【解决方案1】:

没有任何数据示例,我想你可能想要这样的东西:

SELECT *
FROM
(
    SELECT rn = ROW_NUMBER() OVER(PARTITION BY sku
           ORDER BY date DESC)
         , count = sum(qty)
         , sku
    FROM yourtable
    group by sku, date
) a
WHERE a.rn = 1

【讨论】:

  • 感谢您的回答。使用下面的解决方案,我收到以下错误消息 8120,级别 16,状态 1,第 32 行 列 'yourtable.Date' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。 SELECT * FROM ( SELECT rn = ROW_NUMBER() OVER(PARTITION BY SKU ORDER BY [Date] DESC) , count = sum(Rolling_Total) , SKU FROM yourtable group by SKU ) a WHERE a.rn = 1
  • 这只是意味着我忘记将日期添加到组中。但看起来你试图运行我写的东西。您需要将“yourtable”修改为您要查询的表的名称。
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
相关资源
最近更新 更多