有如下表格内容name   value    type
a        1        1
b        2       1
c        3        1将type=1的行用sql返回如下内容a   b   c
1   2   3

解决方案 »

  1.   

    http://topic.csdn.net/t/20030926/15/2303308.html
      

  2.   

    CREATE TABLE # (NAME VARCHAR(10),VALUE INT,TYPE INT)
    INSERT INTO # SELECT 'a',1,1
    union all select 'b',2,1
    union all select 'c',3,1--sql SERVER 2000
    DECLARE @S VARCHAR(2000)
    SET @S=''
    SELECT @S=@S+',['+NAME+']=MAX(CASE WHEN NAME='''+NAME+''' THEN VALUE END)'
    FROM #
    GROUP BY NAME
    SET @S='SELECT '+STUFF(@S,1,1,'')+' FROM #'
    EXEC(@S)
    /*
    a           b           c           
    ----------- ----------- ----------- 
    1           2           3
    */--SQL SERVER 2005SELECT * FROM (SELECT NAME,VALUE FROM #) AS TP
    PIVOT
     (MAX(VALUE)
      FOR NAME IN([a],[b],[c])
     ) as pivt--删除环境
    DROP TABLE #