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


輸出的結果

姓名分佈式數據庫軟件測試總分
80080
7090160

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 bgm 的頭像
    bgm

    bgm

    bgm 發表在 痞客邦 留言(0) 人氣()