sql-server - 按日期计算滚动差异的 SQL 查询

标签 sql-server date

我似乎无法完全解决这个问题。

我正在使用 MS SQL Management Studio 2008。

我有一张 table (实际上有几张),但让我们保持简单。该表包含每个项目 (SKU) 的每日库存数据。

SKU DataDate               Web_qty
2   2014-11-17 00:00:00    404
2   2014-11-18 00:00:00    373
2   2014-11-19 00:00:00    1350
66  2014-11-17 00:00:00    3624
66  2014-11-18 00:00:00    3576
66  2014-11-19 00:00:00    3570
67  2014-11-17 00:00:00    9353
67  2014-11-18 00:00:00    9297
67  2014-11-19 00:00:00    9250

我只需要 Select Query 返回这个:

SKU DataDate               Difference
2   2014-11-17 00:00:00    ---
2   2014-11-18 00:00:00    -31
2   2014-11-19 00:00:00    +977
66  2014-11-17 00:00:00    ---
66  2014-11-18 00:00:00    -48
66  2014-11-19 00:00:00    -6
67  2014-11-17 00:00:00    ---
67  2014-11-18 00:00:00    -56
67  2014-11-19 00:00:00    -47

我不需要 --- 部分,我只是展示了这一点,以引起注意这个不能计算的事实,因为它是第一条记录。

我尝试过使用派生表,但它有点令人困惑,我需要尝试一个工作示例以便更好地理解它。

如果有人能给我指出正确的方向,我相信我能够将其他表格重新组合在一起(即 SKU 描述和价格)。

非常感谢大家的时间

KV

最佳答案

试试这个。使用相关子查询查找rolling difference

CREATE TABLE #tem
  (SKU      INT,DataDate DATETIME,Web_qty  INT)

INSERT #tem
VALUES( 2,'2014-11-17 00:00:00',404),
       (2,'2014-11-18 00:00:00',373),
       (2,'2014-11-19 00:00:00',1350),
       (66,'2014-11-17 00:00:00',3624),
       (66,'2014-11-18 00:00:00',3576),
       (66,'2014-11-19 00:00:00',3570),
       (67,'2014-11-17 00:00:00',9353),
       (67,'2014-11-18 00:00:00',9297),
       (67,'2014-11-19 00:00:00',9250)

SELECT *,
       Web_qty - (SELECT Web_qty
                  FROM   #tem a
                  WHERE  a.sku = b.SKU
                         AND a.DataDate = Dateadd(dd, -1, b.DataDate)) Roll_diff
FROM   #tem b 

关于sql-server - 按日期计算滚动差异的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26988679/

相关文章:

c# - 如何从数据库中获取可为空的 DateTime

sql-server - Visual Studio 2012 的数据库资源管理器中缺少图表文件夹

date - 由于时间戳记长度,从Spark到Elasticsearch写入日期时出错

android - 在 DatePicker 中将一周的第一天设置为星期一

Java:我需要有关 Date 类的帮助

sql - 如何将多行字符串拆分为 tsql 中的列

SQL 生成序列号

sql-server - 如何从命令行附加 SQL Server 数据库

ASP.net 日期格式

PHP 在日期和今天日期之间计数