时间:2021-07-01 10:21:17 帮助过:25人阅读
简单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提高
结合实例理解:
(一)

要求:依据表格求每个大洲的人口总和?
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
结果如下:

(二)

要求:按照国家和性别分组?
select country,sum(case when sex=‘1‘ then population else 0 end), sum (case when sex=‘2‘ then population else 0 end) from csp group by country;
结果如下:
(三)select case when 用法
 结果1:
结果1: 结果2:
结果2:
实例1
SELECT    
  COUNT (CASE WHEN sex = 1 THEN 1     
              ELSE NULL
              END) 男生数,
  COUNT (CASE WHEN sex = 2 THEN 1
              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用法
结果1 结果2
结果2
实例1
SELECT *
  FROM students a
  WHERE (CASE 
           WHEN a.sex= 1 THEN 1
         ELSE 0
END) =1 | 0
(五) group by case when用法
 结果
SELECT 
    CASE 
       WHEN sex =1 THEN ‘1‘ 
       ELSE NULL 
    END sex,
    count(*)num
FROM  students 
GROUP BY 
   CASE 
      WHEN sex =1 THEN ‘1‘ 
      ELSE NULL 
   END 
sql server case when
标签:实例 nts 技术 格式 where group by idt 问题 alt