//這裏顯示的科目是安按什么順序排列的?改這一句select @s='',@i=0
select @i=@i+1
,@s=@s+case
when @i=7 then ',其他=sum(case when 科目 in('''+科目+''''
when @i>7 then ','''+科目+''''
else ',['+科目+']=sum(case 科目 when '''+科目+''' then 成绩 else 0 end)'
end
from 表
group by 科目
order by case 科目 when '化學' then 0 when '体育' then 1 when '物理' then 2 when '政治' then 3 when '英語' then 4 when '語文' then 5 else 6 end
select @i=@i+1
,@s=@s+case
when @i=7 then ',其他=sum(case when 科目 in('''+科目+''''
when @i>7 then ','''+科目+''''
else ',['+科目+']=sum(case 科目 when '''+科目+''' then 成绩 else 0 end)'
end
from 表
group by 科目
order by case 科目 when '化學' then 0 when '体育' then 1 when '物理' then 2 when '政治' then 3 when '英語' then 4 when '語文' then 5 else 6 end
select @s='',@i=0
select @i=@i+1
,@s=@s+case
when @i=7 then ',其他=sum(case when 科目 in('''+科目+''''
when @i>7 then ','''+科目+''''
else ',['+科目+']=sum(case 科目 when '''+科目+''' then 成绩 else 0 end)'
end
from 表
group by 科目 order by sum(成绩)
if @i>6 set @s=@s+') then 成绩 else 0 end)'
exec('select 學號'+@s+' from 表 group by 學號')
select @s='',@i=0
select @i=@i+1
,@s=@s+case
when @i=7 then ',其他=sum(case when 科目 in('''+科目+''''
when @i >7 then ','''+科目+''''
else ',['+科目+']=sum(case 科目 when '''+科目+''' then 成绩 else 0 end)'
end
from 表
group by 科目 order by sum(成绩)desc
if @i >6 set @s=@s+') then 成绩 else 0 end)'
exec('select 學號'+@s+' from 表 group by 學號')
這個問題我一貼上去,就想起來了,只要加一order by sum(成绩) desc 即可
select @s='',@i=0
select @i=@i+1
,@s=@s+case
when @i=7 then ',其他=sum(case when 科目 in('''+科目+''''
when @i >7 then ','''+科目+''''
else ',['+科目+']=sum(case 科目 when '''+科目+''' then 成绩 else 0 end)'
end
from 表
group by 科目 order by sum(成绩)desc
if @i >6 set @s=@s+') then 成绩 else 0 end)'
exec('select 學號'+@s+' from 表 group by 學號')