天天看點

case when then else_SQL中CASE表達式的妙用

case 表達式作為标準SQL的用法,真的是很強大。

case 表達式分為搜尋表達式和簡單表達式,由于搜尋表達式包含了簡單表達式的所有用法,此處僅介紹搜尋表達式的用法。

搜尋 case 表達式的文法如下:

上述語句執行時,依次判斷 when 表達式是否為真值,是則執行 then 後的語句,如果所有的 when 表達式均為假,則執行 else 後的語句。

取代小表關聯

之前工作中遇到一個需求,需要将表中的某列進行轉換,以得到新的列,當時采用的建立小表,然後再進行内連接配接的方法。

這個用法也沒啥問題,就是需要多建立一個表并寫入資料,步驟略微繁瑣。最近學習 case 表達式的用法,發現正好可以用來完成此工作。

兩種寫法可以得到同樣的結果,運作效率差異不大。第二種寫法看似代碼更加複雜,但是較寫法一少了建表、插入資料的步驟。

行轉列

假設有下表

case when then else_SQL中CASE表達式的妙用

想轉換成下面的樣子,該如何寫 sql 呢?

case when then else_SQL中CASE表達式的妙用

case when 表達式 + 聚合函數可以實作行轉列

總結:

  • 當待轉換列為數字時,可以使用

    sum avg max min

    等聚合函數;
  • 當待轉換列為文本時,可以使用

    max min

    等聚合函數

繼續閱讀