2010-11-16 91 views
0

我想编写一个在SQL Server 2000中使用透视图的SQL语句。PIVOT关键字在SQL Server 2000中不可用,因此我找到了一些使用case语句的示例但是这要求你事先知道列名,我不会。我如何做一个数据透视表,从它可用的数据中动态生成列名称?如何在SQL Server 2000中执行动态数据透视

回答

0

我们使用来自应用程序的CASE语句创建SQL命令,并在数据库(任何数据库,不是特定的SQL服务器)上触发它们。首先,我们使用一个查询来确定透视列的数量及其名称,从我们生成下一个查询的结果中确定。 所以确定列第一查询颇像:

SELECT DISTINCT myField FROM myTable 

然后我们使用这个结果所有的值来构建,其中每个值生成一个CASE语句的SQL命令。

我们想要一个不依赖数据库的解决方案,所以我们在数据库之外进行这种处理,但是我确信你可以在SQL Server本身的存储过程中做同样的事情。

+1

我试过了你的想法,它的工作原理,但我认为你应该添加示例代码到你的答案构建SQL命令与CASE语句,以帮助其他人遇到此答案。 – Joe 2010-11-17 04:38:40

0

我还没有尝试在SQL Server 2000上复制PIVOT,但我所做的是在事先不知道列名时使用PIVOT。我曾使用ROW_NUMBER()来确定列名称。你可以试试。