参考自:(14条消息) SQL:行列转换_lch_2016的博客-CSDN博客_sql行列转换
sql:
where 不能使用聚合函数,不能使用同一等级的别名
列转行:
用到的是case 的第一种用法:
case 列值 when '语文' then t_id else 0 end
行转列:
使用 union all
select id,
'语文' as '课程',
c_score
from test
union all
select id,
'数学' as '课程',
m_score
from test
求学过01 和02 的人
select
s_id
from
(select s_id,c_id,lead(c_id,1) over (partition by s_id) d from score)a
where a.c_id=01 and a.d=02
(按照逻辑可以写出来,但是不知道为什么不对)
select a.s_id(
select * from score where c_id=01) a
join
(
select * from score where c_id=02) b
where a.s_id=b.s_id