数据库中的一种条件查询 case when

在最近的一场笔试中,遇到这样一道sql的题目。

有一张表如下:

数据库中的一种条件查询 case when

要通过查询语句得到以下结果:

数据库中的一种条件查询 case when

知识点:case 搜索函数

1:简单的case函数

 case    clo_name (列名)

    when  value1(列值) then  value1' ( value1' 是我们赋予的值 )

    when value2 (列值)   then   value2'  ( value2'   是我们赋予的值)   

else '其他'  end

2:case 搜索函数

case     when clo_name=value1' then value1'

            when clo_name=value2  then value2'

else  '其他' end

这两种方式均可以实现相同的功能。但是有个主意的点就是有多个条件的时候,case第一个满足的条件之后的case就会被省略掉了。

3:sum和case结合使用实现分段统计。

        select  sum(case when then end)newName from table


回到这个题目;

我们做出的解答就是:

        SELECT  year,sum( CASE WHEN season='1' THEN num ELSE 0 END)"1季度",

                            sum( CASE WHEN season='2' THEN num ELSE 0 END)"2季度",

                            sum( CASE WHEN season='3' THEN num ELSE 0 END)"3季度",

                            sum( CASE WHEN season='4' THEN num ELSE 0 END)"4季度" 

        FROM sale GROUP BY year

达到效果。