mysql - SQL获取同一列但同一表中不同日期的值差异

标签 mysql sql oracle-sqldeveloper

如何获得特定日期的特定列的值与前一个日期的同一列的值之间的差异?

Current Table:
Date          Qty
8-Jan-17      100
9-Jan-17      120
10-Jan-17     180

Desired Output:

Date         Diff Qty
9-Jan-17      20
10-Jan-17     60

最佳答案

假设日期不重复并且日期之间也没有间隙,这将起作用。

    --Sample data as provided. This script works in SQL Server 2005+
    CREATE TABLE #Table1
        ([Date] datetime, [Qty] int)
    ;

    INSERT INTO #Table1
        ([Date], [Qty])
    VALUES
        ('2017-01-08 00:00:00', 100),
        ('2017-01-09 00:00:00', 120),
        ('2017-01-10 00:00:00', 180)
    ;

   --This script is plain SQL for any DMBS 

   select y.Date, y.Qty-x.Qty as 'Diff Qty'
   from #table1 x inner join #Table1 y 
     on x.Date+1=y.Date

结果

+-------------------------+----------+
|          Date           | Diff Qty |
+-------------------------+----------+
| 2017-01-09 00:00:00.000 |       20 |
| 2017-01-10 00:00:00.000 |       60 |
+-------------------------+----------+

关于mysql - SQL获取同一列但同一表中不同日期的值差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42404814/

相关文章:

mysql - 当我克隆一个 mysql 数据库时,在各个表上设置了 data_directory,克隆的表作为文件存储在哪里?

mysql - 将整个表复制到其他表并更改 id

sql - 一列上的多个索引

sql - 从一个表中选择列并从另一个表中计数

mysql - 如何使用嵌套连接编写 select 语句

mysql - 将 MySQL 迁移到 SQL Server - 外键给出了一个不清楚的错误(对我来说)

sql - 如何在 microsoft sql server 上的有限时间范围内从同一个人获取 2 笔交易?

SQL Server如何按顺序选择第一行

oracle - 在 Oracle 中捕获/捕获存储过程调用(带参数)的快速方法?

SQL Developer 脚本输出因边距问题而被截断