生成crosstab是,如果字段数量不固定,而是从其他语句里select出来的,该怎么解决那?
解决方案 »
- 怎么用 sp_oacreate 'adodb.stream',sp_oacreate 'Microsoft.XMLHTTP'
- MSSQL 层级结构删除问题
- sqlstate 42000[error 7399]
- 谁有SQL2008R2或者更高版本,帮忙导个脚本?
- 救命啊!各位SQL Server高手!!!98连接SQL server2k 的问题
- 查询问题
- 如何来优化这个SQL语句
- 求一 sql 语句(很常见)急急急急急
- SQL导入数据问题
- 对于用vfp6.0编译的exe文件,怎样才能不被人反编译出来?
- 关于自增列identity_insert的问题
- 如何卸载Log Explorer for SQL Server v3.3 特别版
tab_1
point ltime lcount
-------------------------------
asm1 00 100
asm1 01 400
asm1 02 200
asm2 00 100
asm2 01 400
asm2 02 200
==============================>>
crosstab:tab_2
ltime asm1 asm2
------------------------------
.....
问题是 生成tab_2是,根据具体条件,所显示的字段数量
不固定,有可能有 asm2也有可能有asm3。
怎么解决呢?
set @sql = 'select ltime'
select @sql = @sql + ',sum(case point when '''+point+''' then lcount else ''''end) ['+point+']'
from (select distinct point from tab_1) as aselect @sql = @sql+' from tab_1 group by ltime '
exec(@sql)
Declare @sql varchar(8000)
set @sql = 'select ltime'
select @sql = @sql + ',sum(case point when '''+point+''' then lcount else ''''end) ['+point+']'
from (select distinct point from tab_1) as aselect @sql = @sql+' from tab_1 group by ltime '
--exec(@sql)
Print @sql就可以看到静态方式了,是这个意思吗?