【问题标题】:How to use LEAD in SQL Server 2008如何在 SQL Server 2008 中使用 LEAD
【发布时间】:2018-01-08 02:55:40
【问题描述】:

我有这个脚本,它在 SQL Server 2012 中工作,但我需要在 SQL Server 2008 中使用它。有人有建议吗?

Create table #TempOne (ID int)

Insert into #TempOne 
Values (1), (2), (34), (121), (72), (34), (81), (26), (234)

Create table #TempTwo 
(
    ID int,
    Name Varchar(30),
    Age int
)

Insert into #TempTwo  
Values (18, 'P', 291), (11, 'P', 21), (13, 'P', 11), (21, 'P', 21)

Select 
    LEAD(ID,3) Over(Order By ID) As ID,  Name , Age  
From 
    (Select ID, NULL As Name, NULL As Age
     From #TempOne
     Union
     Select NULL, Name, age  
     From #TempTwo) a

【问题讨论】:

  • 我的回答解决了你的问题吗?如果是这样,你能花时间接受我的回答来表明这一点吗?您可以通过选中答案旁边的复选标记 (✔) 来接受答案。

标签: sql-server-2008 tsql lag lead


【解决方案1】:

您的查询将如下所示:

WITH a AS (
    Select ID , NULL As Name,NULL As Age
    From #TempOne
    Union
    Select NULL, Name,age  From #TempTwo
),
an AS (
    SELECT
        *,
        rn=ROW_NUMBER() OVER (ORDER BY ID)
    FROM
        a
)
SELECT
    an_r.ID,an_l.Name,an_l.Age
FROM 
    an AS an_l
    LEFT JOIN an AS an_r ON
        an_r.rn=an_l.rn+3;

这样做是首先使用ROW_NUMBER 对行进行编号,按ID 排序。在这种情况下,LEAD(ID,3) 可以通过自加入 right-rn=left-rn+3 上的编号集来完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 2021-10-28
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多