我完全熟悉链接中用于执行动态数据透视查询的以下方法。是否有另一种方法可以执行动态透视,而无需将查询存储为字符串并在其中插入列字符串?
http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265.aspx
简短回答: no.
长答案:
嗯,那还是no。但我会尝试解释原因。截至目前,当您运行查询时,数据库引擎要求了解查询将返回的结果集结构(列数、列名、数据类型等)。因此,当你向数据库询问数据时,你必须定义结果集的结构。想一想:您是否曾经运行过一个事先不知道结果集结构的查询?
即使您这样做,这也适用select *
,这只是一个糖语法。最后,返回的结构是“该表中的所有列”。
通过组装字符串,您可以在请求结果集之前动态生成所需的结构。这就是它起作用的原因。
最后,您应该意识到动态组装字符串可以理论上和潜在地(虽然不太可能)给你一个包含无限列的结果集。当然,这是不可能的,而且会失败,但我相信您已经理解其中的含义。
Update
我发现了这一点,这强化了它不起作用的原因。
Here http://social.msdn.microsoft.com/Forums/en-us/sqlintegrationservices/thread/b69484d7-d314-449e-8be3-af68e9e5ec8f:
SSIS 依赖于提前了解数据流的元数据以及
动态枢轴(这就是您所追求的)与
那。
我会继续在这里查找和添加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)