日期:2014-05-18  浏览次数:20647 次

关于SqlServer2000 临时表和行列转换的问题
存储过程中
定义一个@sql   varchar(8000)里面放了一个select语句

通过参数拼凑where语句后执行     exec(@sql)返回一个结果集

然后对结果集的部分列进行行列转换,(需要转换成   列的     行数量是不固定的)

我是使用的是case语句进行转换

这样做需要把exe(@sql)的结果集存储在一个@TmpTable   table变量中
请教如何把exe(@Sql)的结果存储在这个表变量里呢?

或者大家有什么更好的办法进行处理呢?

------解决方案--------------------
因为表变量受到自身所处有效范围的限制,用来存放不定行转列的语句执行的结果不太现实。
------解决方案--------------------
用全域臨時表試試?
或者乾脆用個temp_t,最後drop 好了
------解决方案--------------------
在临时表做一次中间转换.生成临时表后,然后处理数据集.
------解决方案--------------------
放临时表就行了

create table #(xxx....)
insert # exec(@sql)
然后对临时表#进行操作