0

我有这个脚本,它适用于 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
4

1 回答 1

0

您的查询将类似于以下内容:

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

于 2018-01-08T04:42:18.880 回答