天天看点

一个行列转换的问题

问题: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