create table #T(姓名 varchar(100), 科目 varchar(100), 成績 int)
insert into #T select '林', '軟件測試', 90
insert into #T select '林', '分佈式數據庫', 70
insert into #T select '王', '分佈式數據庫', 80
CREATE PROCEDURE Test2
AS
Declare @sql varchar(8000)
Select @sql = ''
--動態生成case when 語句
Select @sql = @sql + ', SUM(Case 科目 When ''' + 科目 + ''' Then 成績 Else 0 End) As ' + 科目
From #T Group By 科目
--按姓名分組
Select @sql = ' Select 姓名,' + Stuff(@sql, 1, 1, '') + ',sum(成績) as 總分 From #T Group By 姓名'
--打印出動態生成的SQL語句
print @sql
EXEC(@sql)
go
輸出的結果
姓名 | 分佈式數據庫 | 軟件測試 | 總分 |
王 | 80 | 0 | 80 |
林 | 70 | 90 | 160 |
全站熱搜
留言列表