感謝:
case具有兩種格式。簡單case函式和case搜尋函式。
--簡單case函式
case***when'1
'then'男
'when'2
'then'女
'else'其他
'end
--case搜尋函式
case這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判斷式。還有乙個需要注意的問題,case函式只返回第乙個符合條件的值,剩下的case部分將會被自動忽略。when *** ='1
'then'男
'when *** ='2
'then'女
'else'其他
'end
--比如說,下面這段sql,你永遠無法得到「第二類」這個結果
case下面我們來看一下,使用case函式都能做些什麼事情。when col_1 in ( '
a', '
b') then
'第一類
'when col_1 in ('
a') then
'第二類
'else'其他
'end
一,已知資料按照另外一種方式進行分組,分析。
有如下資料:(為了看得更清楚,我並沒有使用國家**,而是直接用國家名作為primary key)
根據這個國家人口資料,統計亞洲和北美洲的人口數量。應該得到下面這個結果。
想要解決這個問題,你會怎麼做?生成乙個帶有洲code的view,是乙個解決方法,但是這樣很難動態的改變統計的方式。
如果使用case函式,sql**如下:
select分析:這裡說明一下以上的sql是怎樣分組計算人口的,截圖說話:case
country
when'中國
'then'亞洲
'when'印度
'then'亞洲
'when'日本
'then'亞洲
'when'美國
'then
'北美洲
'when
'加拿大
'then
'北美洲
'when
'墨西哥
'then
'北美洲
'else'其他
'end
洲,sum
(population) 人口
from
table_a
group
bycase
country
when'中國
'then'亞洲
'when'印度
'then'亞洲
'when'日本
'then'亞洲
'when'美國
'then
'北美洲
'when
'加拿大
'then
'北美洲
'when
'墨西哥
'then
'北美洲
'else'其他
'end;
以上的case函式將返回三組結果,在生成的虛擬表中將會以此計算各組的人口,即:sum(population)
同樣的,我們也可以用這個方法來判斷工資的等級,並統計每一等級的人數。sql**如下:
select結果:case
when salary<=
500then'1
'when salary>
500and salary<=
600then'2
'when salary>
600and salary<=
800then'3
'when salary>
800and salary<=
1000
then'4
'else
null
end工資類別,
count(*
) 人數
from
table_b
group
bycase
when salary<=
500then'1
'when salary>
500and salary<=
600then'2
'when salary>
600and salary<=
800then'3
'when salary>
800and salary<=
1000
then'4
'else
null
end;
二,用乙個sql語句完成不同條件的分組。
有如下資料
按照國家和性別進行分組,得出結果如下
普通情況下,用union也可以實現用一條語句進行查詢。但是那樣增加消耗(兩個select部分),而且sql語句會比較長。
下面是乙個是用case函式來完成這個功能的例子 (注意:下面的sql與「按洲統計人口」的sql在分組上的區別:這裡是按表中的某一列進行分組,而那個是按case..when返回的結果進行分組。)
select這樣我們使用select,完成對二維表的輸出形式,充分顯示了case函式的強大。country,
sum(case *** when
1then population else
null
end) 男,
sum(case *** when
2then population else
null
end) 女
from
table_c
group
by country
SQL Case when 的使用方法
摘自 case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現...
SQL Case when 的使用方法
case具有兩種格式。簡單case函式和case搜尋函式。簡單case函式 case when 1 then 男 when 2 then 女 else 其他 end case搜尋函式 case when 1 then 男 when 2 then 女 else 其他 end 這兩種方式,可以實現相同的...
SQL Case when 的使用方法
merge關鍵字是乙個神奇的dml關鍵字。它在sql server 2008被引入,它能將insert,update,delete簡單的並為一句。msdn對於merge的解釋非常的短小精悍 根據與源表聯接的結果,對目標表執行插入 更新或刪除操作。例如,根據在另乙個表中找到的差異在乙個表中插入 更新或...