SQL语句利用case实现行转列

数据库格式:
name       subject    countnum
狗尾       语文       30
狗尾       数学       32
狗尾       外语       0
大熊       语文       40
大熊       数学       50
大熊       外语       38
狗尾       语文       70


实现目标:
name       语文 数学 外语
大熊       40      50      0
狗尾       100    32      0

实现语句:
select name,语文=isnull(sum(case subject when '语文' then COUNTNUM end),0),
   数学=isnull(sum(case subject when '数学' then COUNTNUM end),0),
   英语=isnull(sum(case subject when '英语' then COUNTNUM end),0)
   from GOUGE
   group by NAME
   order by NAME

通过case判断当前行的subject是不是语文,是的话就取counternum的值.
外面再加个sum来取和

原文地址:https://www.cnblogs.com/madgoat/p/729445.html