Sql server 如何创建包含下一条或上一条记录信息的视图?

Sql server 如何创建包含下一条或上一条记录信息的视图?,sql-server,create-view,Sql Server,Create View,有人能帮我创建视图代码来获得下面的结果集吗 创建“视图”“我的视图”作为“从移动中选择…” 我有一张这样的桌子: ID name City from date U1 Smith New York 1 jan 2000 U1 Smith Austin 1 dec 2001 U1 Smith Scottsdale 1 jul 2002 U2 Jack Houston 1 sep 2000 U2 Jack New Yor

有人能帮我创建视图代码来获得下面的结果集吗

创建“视图”“我的视图”作为“从移动中选择…”

我有一张这样的桌子:

ID name City from date U1 Smith New York 1 jan 2000 U1 Smith Austin 1 dec 2001 U1 Smith Scottsdale 1 jul 2002 U2 Jack Houston 1 sep 2000 U2 Jack New York 1 nov 2000 U3 Jane Knoxville 1 feb 2000 U3 Jane Richmond 1 mrt 2001 U3 Jane San Diego 1 jan 2002 U3 Jane Oak Park 1 oct 2004 我想谈谈这些人的动向

我可能有两个结果集。第一个有列数限制,我知道

我希望每个结果集都有一个视图

结果集1:

结果2

您可以对结果集2使用LEAD窗口功能

SELECT ID,
       NAME,
       City,
       [from date],
       toCity = Coalesce(Lead(City)over(Partition by ID, name order by [from date]),'')
FROM   Yourtable
结果集1需要动态枢轴


我想提出一个看法,我可能有2个结果集不计算。第一个有列数限制,我知道。什么限制?为什么?这个问题表明没有任何研究工作。 ID name City from date to city U1 Smith New York 1 jan 2000 Austin U1 Smith Austin 1 dec 2001 Scottsdale U1 Smith Scottsdale 1 jul 2002 U2 Jack Houston 1 sep 2000 New York U2 Jack New York 1 nov 2000 U3 Jane Knoxville 1 feb 2000 Richmond U3 Jane Richmond 1 mrt 2001 San Diego U3 Jane San Diego 1 jan 2002 Oak Park U3 Jane Oak Park 1 oct 2004
SELECT ID,
       NAME,
       City,
       [from date],
       toCity = Coalesce(Lead(City)over(Partition by ID, name order by [from date]),'')
FROM   Yourtable
DECLARE @sql      NVARCHAR(max),
        @col_list VARCHAR(max)

SET @col_list =Stuff((SELECT DISTINCT ','+ Quotename('City '+ Cast(Row_number()OVER(partition BY ID ORDER BY [from date]) AS VARCHAR(50)))
                      FROM   Yourtable
                      FOR xml path('')), 1, 1, '')
SET @sql = '
select * 
    from (select ID,name,City,city_num =''City ''+ cast(row_number()over(partition by ID order by [from date]) as varchar(50))  
            from Yourtable) a
    pivot (max(city) for city_num in ('+ @col_list + ')) pv'

EXEC Sp_executesql @sql