Sql server 2005 我有下表,希望将行转换为不同的列

Sql server 2005 我有下表,希望将行转换为不同的列,sql-server-2005,Sql Server 2005,进入以下领域 ID Code Date 1 3101 10/2/2010 1 3101 15/2/2010 2 3101 18/2/2010 2 3101 25/4/2010 2 3101 21/4/2010 你可以用这个。示例如下: ID Date1 Date2 Date3 Date4 Date5 1 10/2/2010

进入以下领域

ID    Code      Date
1     3101       10/2/2010
1     3101       15/2/2010
2     3101       18/2/2010
2     3101       25/4/2010
2     3101       21/4/2010 
你可以用这个。示例如下:

ID   Date1      Date2      Date3       Date4      Date5
 1   10/2/2010  15/2/2010  
 2   18/2/2010  25/4/2010  21/4/2010  
假设您需要更多的日期,只需添加更多的透视行即可。

您可以使用它。示例如下:

ID   Date1      Date2      Date3       Date4      Date5
 1   10/2/2010  15/2/2010  
 2   18/2/2010  25/4/2010  21/4/2010  


假设您需要更多的日期,只需添加更多透视行。

从选择ID中选择ID、[Date1]、[Date2]、[Date3]、[Date4],从tempAMS中选择日期p pivot MaxDateFOR[Date1]、[Date2]、[Date3]、[Date4]中的日期作为pvt,这是我在数据透视上的尝试,它似乎不起作用-我无法将日期输入相关列我最初尝试使用光标,因为我还将有其他代码进入其他日期列,因此我可以计算每个id的暂停天数,但这对我也不起作用-我对TSQL不熟悉,只使用了一段时间几个月后,我也在努力让这项工作发挥作用,但看来我毕竟不太擅长数据透视。。我会继续尝试。@Ronald:这是一种非常有用的旋转方法。很好地利用了行数+1太好了,我会去把它转移到我的数据库中,感谢从选择ID中选择ID、[Date1]、[Date2]、[Date3]、[Date4],从tempAMS p PIVOT MaxDateFOR中选择日期,[Date1]、[Date2]、[Date3]、[Date4]作为pvt,这是我在数据透视上的尝试,它似乎不起作用-我无法将日期输入相关列我最初尝试使用光标,因为我还将有其他代码进入其他日期列,因此我可以计算每个id的暂停天数,但这对我也不起作用-我对TSQL不熟悉,只使用了一段时间几个月后,我也在努力让这项工作发挥作用,但看来我毕竟不太擅长数据透视。。我会继续尝试。@Ronald:这是一种非常有用的旋转方法。很好地利用了行数+1太好了,我会去把它转移到我的数据库中,谢谢你注意到了,现在发布的内容不会通过一个简单的pivot查询来解决。看起来您希望每个Id有一行,每个Id的不同日期有一列,日期按列升序排列,因此列的数量与任何给定Id的最多日期相同,即在您的示例中,您知道每个Id最多有5个日期-或者,你有一个硬性的上限,每个Id显示不超过五个日期?我想我的问题是,你需要多少个日期栏,什么决定了每行中这些列的内容?正是我所需要的-我尝试使用游标,但我的知识让我失望,因为我仍在学习我希望它不超过10,如果我解释我试图做什么,它可能有助于我们有一行又一行的编码数据,每行代码用于每个ID时都有一个日期,我们希望这样做显示每个ID及其相关日期我们有两个代码3101是开始,1101是结束,我们将计算每个开始和结束之间的天数,然后将它们相加,得出每个ID的总数。一些ID可能有多个开始和结束。刚才注意到,现在发布的内容无法通过简单的透视查询解决。看起来您希望每个Id有一行,每个Id的不同日期有一列,日期按列升序排列,因此列的数量与任何给定Id的最多日期相同,即在您的示例中,您知道每个Id最多有5个日期-或者,你有一个硬性的上限,每个Id显示不超过五个日期?我想我的问题是,你需要多少个日期栏,什么决定了每行中这些列的内容?正是我所需要的-我尝试使用游标,但我的知识让我失望,因为我仍在学习我希望它不超过10,如果我解释我试图做什么,它可能有助于我们有一行又一行的编码数据,每行代码用于每个ID时都有一个日期,我们希望这样做显示每个ID及其相关日期我们有两个代码3101是开始,1101是结束,我们将计算每个开始和结束之间的天数,然后将它们相加,得出每个ID的总数。一些ID可以有多个开始和结束