case具有两种格式:简单Case函数和Case搜索函数

简单case函数

实例:CASE sex 
    when '1' then '男' 
    when '2' then'女' 
    else '其他'  end

Case搜索函数 

实例: CASE

WHEN sex = '1' THEN '男' 
     WHEN sex = '2' THEN '女' 
     ELSE '其他'  END

--还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略


case when提高

结合实例理解:

(一)

sql server case when-LMLPHP

要求:依据表格求每个大洲的人口总和?

SELECT SUM(population) as popul,
CASE country
WHEN '中国' THEN '亚洲'
WHEN '印度' THEN '亚洲'
WHEN '日本' THEN '亚洲'
WHEN '美国' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END as area
FROM Cp
GROUP BY area ----------执行报错:列名'area'无效。area是即将生成的结果集中的列名,结果集生成之前无效

(二)

sql server case when-LMLPHP

要求:按照国家和性别分组?

select country,sum(case when sex='1' then population else  end),
sum (case when sex='2' then population else end)
from csp
group by country;
结果如下:
sql server case when-LMLPHP

(三)select case when 用法

sql server case when-LMLPHP结果1:sql server case when-LMLPHP结果2:sql server case when-LMLPHP

实例1

SELECT    
  COUNT (CASE WHEN sex = THEN 1
              ELSE NULL
              END) 男生数,
  COUNT (CASE WHEN sex = THEN
              ELSE NULL
              END) 女生数
  FROM students GROUP BY grade;

实例2

SELECT    
  COUNT (CASE WHEN sex = 1 THEN 1 
              ELSE NULL
              END) 男生数,
  COUNT (CASE WHEN sex = 2 THEN 1
              ELSE NULL
              END) 女生数
  FROM students 

(四)where case when用法

结果1sql server case when-LMLPHP结果2sql server case when-LMLPHP

实例1

SELECT *
  FROM students a
  WHERE (CASE
           WHEN a.sex= 1 THEN 1
         ELSE 0

         END) =1 | 0     

(五) group by case when用法

结果sql server case when-LMLPHP

SELECT
    CASE
       WHEN sex = THEN '1'
       ELSE NULL
    END sex,
    count(*)num
FROM students

GROUP BY
   CASE
      WHEN sex = THEN '1'
      ELSE NULL
   END

05-29 01:23