我发现了很多这方面的点点滴滴,但我不能把它们放在一起。这基本上是表的概念,其中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
起初我使用临时表,并将每个日期行附加到它。我在另一个论坛上看到,这是一种主要的资源浪费。真的吗?有更好的方法吗?
答案 0 :(得分:0)
如果日期列是已知集,则在某些情况下可以使用数据透视。
使用动态sql通常会更快但是这可能非常危险,所以要小心。
要真正了解您的问题的最佳解决方案,我们需要更多信息 - 数据量 - 不同列中预期的变化量等等。
但是,确实,PIVOT和Dynamic SQL都比临时表快。
答案 1 :(得分:0)
您想要查看“交叉表”或“数据透视”语句。在SQL Server 2005及以上,它的PIVOT,但平台之间的语法变化。
这是一个非常复杂的主题,特别是因为随着数据的增长,您希望在视图中添加列。除了您平台的文档,请查看关于该主题的无数其他SO帖子。
答案 2 :(得分:0)
如果我在this answer中提到,我会将动态SQL与数据透视结合起来。
答案 3 :(得分:-1)
我会使用Access或Excel代替T-SQL。