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