[轉(zhuǎn)帖]SQL中Case When的用法
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
![]() ![]() SQL中Case When的用法
本教程操作環(huán)境:windows7系統(tǒng)、Microsoft SQL Server 2016版、Dell G3電腦。 SQL中case when的用法 case when類似于編程語言中的if else判斷、switch case語句。該語句執(zhí)行時(shí)先對(duì)條件進(jìn)行判斷,然后根據(jù)判斷結(jié)果做出相應(yīng)的操作。 Case具有兩種格式:簡單Case函數(shù)和Case搜索函數(shù)。 簡單Case函數(shù):
Case搜索函數(shù):
顯然,簡單Case函數(shù)勝在簡潔,但是它只適用于這種單字段的單值比較,而Case搜索函數(shù)的優(yōu)點(diǎn)在于適用于所有比較的情況。 還有一個(gè)需要注意的問題,Case函數(shù)在滿足了某個(gè)符合條件后,剩下的條件將會(huì)被自動(dòng)忽略,因此,即使?jié)M足多個(gè)條件,執(zhí)行過程中也只認(rèn)第一個(gè)條件。 (PHP中文網(wǎng),有大量免費(fèi)的SQL教程,歡迎大家學(xué)習(xí)!) 在使用 CASE WHEN時(shí),可以把它當(dāng)作一個(gè)邏輯上的匿名字段,字段值根據(jù)條件確認(rèn),在需要使用字段名時(shí)可以是用 as來定義別名。這么說還很抽象,看看下面 CASE WHEN的使用案例就清楚了。 使用場景 1、可以將已知數(shù)據(jù)按照某種方式進(jìn)行分組,分析。 根據(jù)這個(gè)國家人口數(shù)據(jù),統(tǒng)計(jì)亞洲和北美洲的人口數(shù)量。使用如下 SQL:
這里的兩個(gè)CASE WHEN都相當(dāng)于一個(gè)字段,不過值得一提的是,第二個(gè)CASE WHEN 的THEN值并不用寫明是什么洲,它只是用于將記錄進(jìn)行分組,所以THEN后面的值只有能區(qū)分這三種記錄就行,GROUP BY也可以寫成:
2、用一個(gè)SQL語句完成不同條件的分組。 有如下數(shù)據(jù): 用Case函數(shù)來完成按照國家和性別進(jìn)行分組。使用如下SQL:
得到如下結(jié)果: 就第一個(gè)CASE WHEN講解:
當(dāng)記錄的sex為1時(shí),這個(gè)字段的值為記錄的population值,否則為0,因此能計(jì)算出一個(gè)國家的男性人口。 該文章在 2023/6/27 15:13:45 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |