动态数据透视查询,不将查询存储为字符串

时间:2011-07-26 14:12:01

标签: sql sql-server sql-server-2005 sql-server-2008 pivot

我完全熟悉链接中的以下方法,用于执行动态数据透视查询。是否有另一种方法来执行动态数据透视而不将Query作为字符串存储并在其中插入列字符串?

http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx

1 个答案:

答案 0 :(得分:2)

简答: 不。

答案很长:

嗯,那还是没有。但我会尝试解释原因。截至今天,当您运行查询时,数据库引擎需要知道查询将返回的结果集结构(列数,列名,数据类型等)。因此,在从DB请求数据时,必须定义结果集的结构。想一想:你有没有预先运行过一个你不知道结果集结构的查询?

即使你做select *这也只是一种糖语法,这也适用。最后,返回的结构是“此类表中的所有列”。

通过组合字符串,您可以在请求结果集之前动态生成所需的结构。这就是它的原因。

最后,您应该知道动态组装字符串理论上可能(尽管不太可能)可以获得具有无限列的结果集。当然,这是不可能的,它会失败,但我相信你理解其含义。

<强>更新

我发现了这一点,这加强了它无效的原因。

Here

  

SSIS依赖于提前知道数据流的元数据和a   动态枢轴(这是你所追求的)与之不兼容   这一点。

我会一直在这里寻找并添加。