天天看點

一個行列轉換的問題

問題:http://community.csdn.net/Expert/topic/5610/5610544.xml?temp=.4333612

Create Table TEST

(USER_ID Varchar(10),

 USER_DATANAME Varchar(10),

 USER_DATAVALUE Int)

Insert TEST Select   'A',         'X',             12

Union All Select   'B',         'X',             23

Union All Select   'C',         'Z',             34

Union All Select   'B',         'Y',             45

Union All Select   'A',         'Z',             12

Union All Select   'C',         'X',             23

Union All Select   'A',         'Y',             14

Union All Select   'B',         'z',              98

Union All Select   'c',          'y',             199

GO

Create Procedure SP_TEST

As

Begin

 Declare @S Varchar(8000)

 set @S = ' Select [USER_ID]'

 Select @S = @S + ', SUM(Case USER_DATANAME When ''' + USER_DATANAME + ''' Then USER_DATAVALUE Else 0 End) As ' + USER_DATANAME

 From [TEST] Group By USER_DATANAME

 set @S = @S +' From [TEST] Group By [USER_ID]'

 EXEC(@S)

End

GO

EXEC SP_TEST

GO

Drop Table TEST

Drop Procedure SP_TEST