我完全熟悉链接中的以下方法,用于执行动态数据透视查询。是否有另一种方法来执行动态数据透视而不将Query作为字符串存储并在其中插入列字符串?
http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx
答案 0 :(得分:2)
简答: 不。
答案很长:
嗯,那还是没有。但我会尝试解释原因。截至今天,当您运行查询时,数据库引擎需要知道查询将返回的结果集结构(列数,列名,数据类型等)。因此,在从DB请求数据时,必须定义结果集的结构。想一想:你有没有预先运行过一个你不知道结果集结构的查询?
即使你做select *
这也只是一种糖语法,这也适用。最后,返回的结构是“此类表中的所有列”。
通过组合字符串,您可以在请求结果集之前动态生成所需的结构。这就是它的原因。
最后,您应该知道动态组装字符串理论上可能(尽管不太可能)可以获得具有无限列的结果集。当然,这是不可能的,它会失败,但我相信你理解其含义。
<强>更新强>
我发现了这一点,这加强了它无效的原因。
Here:
SSIS依赖于提前知道数据流的元数据和a 动态枢轴(这是你所追求的)与之不兼容 这一点。
我会一直在这里寻找并添加。