日期:2014-05-17 浏览次数:20436 次
CREATE TABLE testTT(名字 varchar(20), 课程 VARCHAR(20), 年级 int, 成绩 int)
insert testtt select 'A' ,'语文', 1, 75
union all select 'A' ,'语文', 2, 80
union all select 'A' ,'语文', 3, 83
union all select 'A' ,'数学', 4, 87
union all select 'A' ,'数学', 5, 90
union all select 'A' ,'数学', 6, 93
DECLARE @sqlT VARCHAR(1000)
SELECT @sqlT=ISNULL(@sqlT+',','')+' MAX(CASE WHEN 年级 ='+ltrim(年级)+' and 课程='''+课程+''' then 成绩 else 0 end ) ['+ ltrim(年级)+'年级'+课程+'的成绩]'
FROM testtt
WHERE 课程='语文' and 年级 in(1,3) or 课程='数学' and 年级 in(5,6)
GROUP BY 年级,课程
EXEC('SELECT 名字,'+@sqlt+' FROM testtt group by 名字')
--result
/*名字 1年级语文的成绩 3年级语文的成绩 5年级数学的成绩 6年级数学的成绩
-------------------- ----------- ----------- ----------- -----------
A 75 83 90 93
*/