求行列转换问题
表t1,如下:
 字段:a         b               c
 
 1         a1             100
 1         a2             200
 2         a1             300
 2         a2             400
 3         a3             500
 4         a4             600
 
 形成新的表
 
 a          a1   a2    a3    a4   
 1          100  200 
 2          300  400    
 3                     500  
 4                          600
 
 也就是增加列以groub by b 来定,然后形成的新表格中的a是 group by(原字段a),对应的值就是原表中的值

解决方案 »

  1.   


    Declare @S varchar(8000)
    Set @S='Select A'
    Select @S=',SUM(Case b When '''+b+''' Then c Else 0 End) As '+b
    From t1 Group By b Order By b
    Select @S=@S+' From t1 Group By a'
    EXEC(@S)
      

  2.   

    汗,上面的有點問題,改下
    Create Table t1
    (a Int,
     b Char(2),
     c Int)
    Insert t1 Select  1,         'a1',             100
    Union All Select  1,         'a2',             200
    Union All Select  2,         'a1',             300
    Union All Select  2,         'a2',             400
    Union All Select  3,         'a3',             500
    Union All Select  4,         'a4',             600
    GO
    Declare @S varchar(8000)
    Set @S='Select A'
    Select @S=@S+',SUM(Case b When '''+b+''' Then c Else 0 End) As '+b
    From t1 Group By b Order By b
    Select @S=@S+' From t1 Group By a'
    EXEC(@S)
    GO
    Drop Table t1
    --Result
    /*
    a a1 a2 a3 a4
    1 100 200 0 0
    2 300 400 0 0
    3 0 0 500 0
    4 0 0 0 600
    */
      

  3.   

    是csdn让我懂的怎么样进行列转化