如何计算Microsoft SQL Server中所有ID的日期差

时间:2018-08-24 16:15:34

标签: sql sql-server date

如何检查每个ID的日期1和日期2之间的差额是否超过6个月?让我举例说明。

所以我有一张这样的桌子:

var mycars_compressed = [['Ford', 'Fiesta', 'Manual', 'Rp. 160.000.000'],
            ['', '', '', 'Rp. 163.000.000'],
            ['', '', 'Automatic', 'Rp. 170.000.000'],
            ...
            ['', '', 'Automatic', 'Rp. 400.000.000'],
            ['VW', 'Golf', 'Manual', 'Rp. 360.000.000'],
            ['', '', '', 'Rp. 365.000.000'],
            ...
];

我想添加第三列,如果第一列和第二列之间的差异超过6个月,则回答是。我只想对第一个说是。如果没有可比较的日期,那也是肯定的。无论如何,这将是最终结果:

+----+---------+
| ID |   Y-M   |
+----+---------+
|  1 | 2017-01 |
|  1 | 2017-02 |
|  1 | 2017-10 |
|  2 | 2017-04 |
|  2 | 2017-06 |
|  3 | 2017-06 |
|  4 | 2017-07 |
+----+---------+

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以使用lead()和一些日期算法:

select t.*,
       (case when lead(ym) over (partition by id order by ym) < dateadd(month, 6, ym)
             then 'No' else 'Yes'
        end) as difference
from t;