为了举例说明,这里创建了一张成绩表,如下图所示:
我们可以用case改变查询结果,代码及结果如下:
selectname,
case Subject
when '语文' then 1
when '数学' then 2
when '英语' then 3 --else 3
end as '科目代码'
fromResults
同样的,我们可以用case实现行转列,代码及结果如下:
selectName,
sum(case when Subject='语文' then Result end) '语文',
sum(case when Subject='数学' then Result end) '数学',
sum(case when Subject='英语' then Result end) '英语'
fromResults
group byName
我们使用decode看看,可以实现以上效果
selectName,decode(Subject,'语文',1,'数学',2,3)科目代码 from Results;
select
Name,
sum(decode(Subject,'语文',Result,0))语文,
sum(decode(Subject,'数学',Result,0))数学,
sum(decode(Subject,'英语',Result,0))英语
from Results
group by Name;