表Doc数据如下所示:
id | name | created_dt | version
-----------------------------------------
1 doc1 2018-12-26 1
2 doc2 2018-12-26 A
3 doc1 2019-01-26 2
4 doc1 2019-02-20 3
5 doc2 2019-02-16 B
6 doc3 2019-03-20 1
5 doc2 2019-04-26 C有什么好方法可以实现这个输出吗?
name | version | days
---------------------------------
doc1 2 30
doc1 3 21
doc2 B 60
doc2 C 45查询如下所示
select name, version, datediff(dd, a.created_dt, b.created_dt)
from doc a
inner join doc b on a.name = b.name and a.id > b.id发布于 2019-04-30 05:32:23
假设您想要两个版本之间的天数,下面是您的SQL,其中的一行与相同的名称但之前的版本进行比较:
DECLARE @MyTable TABLE (id INT, name VARCHAR(10), created_dt DATE, version VARCHAR(10))
INSERT INTO @MyTable
(Id, name, created_dt, version)
VALUES
(1, 'doc1', '2018-12-26', '1'),
(2, 'doc2', '2018-12-26', 'A'),
(3, 'doc1', '2019-01-26', '2'),
(4, 'doc1', '2019-02-20', '3'),
(5, 'doc2', '2019-02-16', 'B'),
(6, 'doc3', '2019-03-20', '1'),
(5, 'doc2', '2019-04-26', 'C')
SELECT * FROM @MyTable ORDER BY name
SELECT T1.name, T1.version, T1.created_dt CreatedT1, T2.created_dt CreatedT2, DATEDIFF(DAY, T2.created_dt, T1.created_dt) diff FROM @MyTable T1
CROSS APPLY (SELECT TOP 1 * FROM @MyTable Tmp WHERE Tmp.name = T1.name AND Tmp.created_dt < T1.created_dt ORDER BY Tmp.created_dt) T2
ORDER BY T1.id但我得到的结果有点不同(在几天内):
name version CreatedT1 CreatedT2 diff
doc1 2 2019-01-26 2018-12-26 31
doc1 3 2019-02-20 2018-12-26 56
doc2 B 2019-02-16 2018-12-26 52
doc2 C 2019-04-26 2018-12-26 121https://stackoverflow.com/questions/55910602
复制相似问题