SQL Server数据透视不知道结果列名?

前端之家收集整理的这篇文章主要介绍了SQL Server数据透视不知道结果列名?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一张桌子,看起来像这样:
Month      Site          Val
2009-12    Microsoft      10
2009-11    Microsoft      12
2009-10    Microsoft      13
2009-12    Google         20
2009-11    Google         21
2009-10    Google         22

而且我想得到一个二维表,给我每个网站的月份“Val”,如:

Month      Microsoft      Google
2009-12        10           20
2009-11        12           21
2009-10        13           22

但是抓到的是,我不知道可能在“站点”中的所有可能的值.如果出现一个新网站,我想在我的结果表中自动获取一个新的列.

我看到的所有代码示例都可以这样做,这需要我在查询文本中对“Microsoft和Google”进行硬编码.
I saw one that didn’t,但它基本上是伪造它通过列出站点生成一个查询(并置一个字符串),其中有这些列名称.

没有办法让sql Server 2008这样做没有这样的黑客?

注意:我需要能够运行这个作为从ASP.Net发送的查询,我不能做存储过程或其他类似的东西.

谢谢!
丹尼尔

解决方法

链接的示例使用动态sql.不幸的是,当预先不知道输出列时,没有其他用于在sql Server中进行转换的内置方法.

如果数据不是太大,可能最简单的方法是从ASP.NET运行正常的行查询,并在应用程序代码中执行枢纽.如果数据非常大,则在首次查询可能的列值之后,必须动态生成sql.

请注意,您实际上不需要编写生成动态sqlsql语句;您可以简单地在ASP.NET中生成sql,这将很容易.只需不要忘记在生成查询之前避免使用不同的Site值,并且不要忘记参数化通常没有关键字的sql语句的任何部分.

猜你在找的MsSQL相关文章