我想在查询当前版本
时获取先前版本的创建日期PriducID | Productversion | Productcreationdate
100 | 1 | 5/5/2012
100 | 2 | 6/6/2013
100 | 3 | 7/7/2015
输出期望如下
PriducID | Productversion | Productcreationdate
100 | 2 | 5/5/2012
答案 0 :(得分:0)
假设正确的版本是2008-r2,您需要使用子查询:
创建并填充样本表(请在将来的问题中保存此步骤)
DECLARE @T AS TABLE
(
PriducID int,
Productversion int,
Productcreationdate date
)
INSERT INTO @T VALUES
(100, 1, '2012-05-05'),
(100, 2, '2013-06-06'),
(100, 3, '2015-07-07')
查询:
SELECT PriducID,
Productversion,
(
SELECT TOP 1 Productcreationdate
FROM @T t2
WHERE t2.Productcreationdate < t1.Productcreationdate
ORDER BY Productcreationdate DESC) As PrevProductcreationdate
FROM @T t1
WHERE Productversion = 2
结果:
PriducID Productversion PrevProductcreationdate
100 2 05.05.2012 00:00:00
如果您的版本是2012,则可以使用CTE和LAG
窗口函数来获得相同的结果:
;WITH CTE AS
(
SELECT PriducID,
Productversion,
LAG(Productcreationdate) OVER (ORDER BY Productcreationdate) As PrevProductcreationdate
FROM @T
)
SELECT PriducID,
Productversion,
PrevProductcreationdate
FROM CTE
WHERE Productversion = 2