所以,我一直在四处寻找,我发现了一些与我的问题相似的东西,但我需要更多的帮助来获得真正的解决方案。
我试图构造一个查询,它将返回2列数据,第一列应该是列名本身的列表,第二列应该是该列的值。
从视觉上看它应该是这样的
Column1 Column2
------- -------
columnA value_of_columnA
columnB value_of_columnB
... ...
我非常肯定这需要动态SQL来实现,但是我甚至不知道如何开始创建查询。
任何帮助都是感激的!
6条答案
按热度按时间ztmd8pv51#
这应该适用于任何表,但在我的示例中,我只创建了一个测试表。您需要在@YourTableName中设置表名。此外,您需要设置@YourTableWhere以将结果限制为一行,否则输出看起来会很奇怪,因为多行混合在一起。
试试这个:
输出:
为了与SQL Server 2000兼容,您应该能够将varchar(max)替换为varchar(8000),并使用此语句替换上面代码中的
SELECT @YourQuery
查询:0yg35tkg2#
lc8prwob3#
你总是可以做这样的事
tvokkenx4#
我对这个问题的回答在SQL Server 2000中会更容易,因为它不使用SQL Server 2005的XML功能。
mzmfm0qo5#
你不太清楚你是如何展示你的报告以及你是用什么来生成它的。你是用查询工具的直接结果来生成你的“报告”吗?在这种情况下,我认为你是在用螺丝刀磅钉子。使用正确的工具来完成这项工作。
SQL语言不应该直接用于设置您的表示数据以生成报表。实际上,这是一个愚蠢的想法。事实上,您可以使用直接的SQL语句编写报表并不意味着您应该这样做。
您确实应该使用自己编写的应用程序或Crystal Reports之类的报表生成工具来生成报表。
报告生成工具:通常,它们提供表示可能出现的动态数据的工具。
不管怎样,我觉得你需要重新考虑你的方法。
b1zrtrql6#
这应该可以在SQL 2008中使用
选择列名,列值从您的表取消透视(列值用于列名在(列A,列B,列C,列D))作为取消透视表