SQL 合并查询 把列数据转为行

表:

姓名  语文    数学     英语

张三    75    90       85
李四    80     85       85


查询结果

姓名    成绩    科目

张三    90      数学
李四    85      数学,英语

select * into CJ
from(
select '张三' as 姓名,75 as 语文,90 as 数学,85 as 英语
union
select '李四' as 姓名,80 as 语文,85 as 数学,85 as 英语
) a
----------------
select 姓名,max(成绩) as 成绩,
 (select case when 语文=MAX(成绩) then '语文,' else '' end+
         case when 数学=MAX(成绩) then '数学,' else '' end+
         case when 英语=MAX(成绩) then '英语' else '' end
 from CJ ab where ab.姓名=a.姓名) as 科目
from
(
select 姓名,语文 as 成绩,'语文' 科目
from CJ
union all
select 姓名,数学 as 成绩,'数学' 科目
from CJ
union all
select 姓名,英语 as 成绩,'英语' 科目
from CJ
) a group by a.姓名


 

原文地址:https://www.cnblogs.com/junjie94wan/p/2419160.html