Sql server 2012 如何在SQL Server中获取当前版本的上一个creationdate
我想在查询当前版本时获取以前的版本创建日期Sql server 2012 如何在SQL Server中获取当前版本的上一个creationdate,sql-server-2012,sql-server-2008-r2,Sql Server 2012,Sql Server 2008 R2,我想在查询当前版本时获取以前的版本创建日期 PriducID | Productversion | Productcreationdate 100 | 1 | 5/5/2012 100 | 2 | 6/6/2013 100 | 3 | 7/7/2015 输出如下所示 PriducID | Productversion | Productcreationdate 100 |
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
假设正确的版本为2008-r2,则需要使用子查询: 创建并填充样本表(请在以后的问题中保存此步骤) 查询:
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
如果您的版本是2012,则可以使用和窗口函数获得相同的结果:
;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
您实际使用的是哪个版本的sql server?
PriducID Productversion PrevProductcreationdate
100 2 05.05.2012 00:00:00
;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