SQL中的case when函數的用法


case函數有兩種格式,即簡單case函數和case搜索函數

 

簡單case函數

語法:

case column

when <condition>  then value

when <condition>  then value

.....

else value end

示例:

case sex

  when '1'  then '男'

  when ‘2’  then '女'

else “其它”  end

 

case搜索函數

語法:

case

when <condition> [, <condition>]  then value

when <condition> [, <condition>]  then value

....

else value end

示例:

case when sex = ‘1’ then ‘男’

    when sex = ‘2’ then “女”

else ‘其它’ end

 

簡單case函數重在簡潔,但是它只適用於這種單字段的單值比較,

case搜索函數的優點在於適用於所有比較(包括多值比較)的情況,但case搜索函數只返回第一個符合條件的值,剩下的case部分將會自動忽略;

如下面這段SQL是永遠無法得到“第二類”的結果:

case when type in (‘a’, 'b')then '第一類'

    when type in (‘a’) then “第二類”

else ‘其他類’  end

 

case的行轉列

case用的比較廣泛的 功能就是行轉列,即將記錄行里的數據按條件轉換成具體的列

        轉換成   

 

 select 姓名,

max(case 課程 when N'語文' then 分數 else 0 end)語文,

 max(case 課程 when N'數學' then 分數 else 0 end)數學,

max(case 課程 when N'物理' then 分數 else 0 end)物理,

from score

group by 姓名

或者使用最新的語法,

select * from score

pivot (max(分數) for 課程 in (語文,數學,物理))

in:行轉列的列部分

max:是聚合in里面的內容,也可以是其它聚合函數:sum,min,count等

pivot:固定寫法,是case when的一種簡略寫法

 

case的可以很好的將需要的數據單獨顯示在一列里面

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM