我已经找到了很多这样的东西,但是我不能把它们放在一起。这基本上就是表的概念,其中name是varchar,date是datetime,number是int
Name | Date | Number
A 1-2-11 15
B 1-2-11 8
A 1-1-11 5
I'd like to create a view that looks like this
Name | 1-2-11 | 1-1-11
A 15 5
B 8一开始,我使用的是一个临时表,并将每个日期行追加到该表中。我在另一个论坛上读到,这是一个主要的资源大王。这是真的吗?有没有更好的方法来做这件事?
发布于 2011-04-19 05:18:28
正如我在this answer中提到的那样,我会将动态SQL与pivot结合起来。
发布于 2011-04-19 04:15:28
如果日期列是一个已知的集合,那么您可以在某些情况下使用pivot。
使用动态sql通常更快,但这可能非常危险,所以要小心。
为了真正了解您的问题的最佳解决方案是什么,我们需要更多的信息--多少数据--不同列中预期的差异,等等。
然而,透视和动态SQL都会比临时表更快,这是事实。
发布于 2011-04-19 04:17:32
您需要查看“交叉表”或“透视”语句。在SQL Server 2005和更高版本中,它是关键,但语法在不同平台之间是不同的。
这是一个非常复杂的主题,尤其是因为您希望随着数据的增长而向视图中添加列。除了你的平台文档之外,还可以查看关于这个主题的无数其他SO帖子。
https://stackoverflow.com/questions/5708326
复制相似问题