Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 返回值更改的每个日期_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql server 返回值更改的每个日期

Sql server 返回值更改的每个日期,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有一张带有PersonID、TeamID和DateEffective的桌子。我想返回每个人更换团队的最早日期。一个人可能会重新回到以前分配给他的团队 Create Table PHistory (PersonID INT, TeamID VARCHAR(8), DateEffective datetime) Insert INTO PHistory Values (1, 'TeamA', '2017-07-01'), (1, 'TeamA', '2017

我有一张带有PersonID、TeamID和DateEffective的桌子。我想返回每个人更换团队的最早日期。一个人可能会重新回到以前分配给他的团队

Create Table PHistory
    (PersonID INT,
    TeamID VARCHAR(8),
    DateEffective datetime)

Insert INTO PHistory
Values (1, 'TeamA', '2017-07-01'),
       (1, 'TeamA', '2017-07-02'),
       (1, 'TeamB', '2017-07-03'),
       (1, 'TeamA', '2017-07-04'),
       (2, 'TeamA', '2017-07-01'),
       (2, 'TeamA', '2017-07-02'),
       (2, 'TeamA', '2017-07-03'),
       (2, 'TeamA', '2017-07-04')
我希望查询返回:

1 | TeamA | 2017-07-01 1 |“团队B”| 2017-07-03 1 | TeamA | 2017-07-04 2 | TeamA | 2017-07-01 我曾经和敏混在一起,但这并不能解决人们可以回到老球队的问题


我看到它使用了一个窗口函数,但它只返回最新的记录,我需要查看所有团队更改,但我看不到如何使其适应我的需要。

这里有一种使用行号的方法

输出

1   2017-07-01 00:00:00.000
1   2017-07-03 00:00:00.000
1   2017-07-04 00:00:00.000
2   2017-07-01 00:00:00.000

太棒了,谢谢。
1   2017-07-01 00:00:00.000
1   2017-07-03 00:00:00.000
1   2017-07-04 00:00:00.000
2   2017-07-01 00:00:00.000