生成crosstab是,如果字段数量不固定,而是从其他语句里select出来的,该怎么解决那?

解决方案 »

  1.   

    example:
    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。
    怎么解决呢?
      

  2.   

    利用分析服务器,建立多维立方体,使用OLAP~~~
      

  3.   

    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)
      

  4.   

    借用WangZWang(阿来)代码:
    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就可以看到静态方式了,是这个意思吗?