標籤:執行個體 nts 技術 格式 where group by idt 問題 alt
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提高
結合執行個體理解:
(一)
要求:依據表格求每個大洲的人口總和?
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 cspgroup by country;
結果如下:
(三)select case when 用法
結果1:結果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
執行個體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