1. 程式人生 > >SQL語句中CASE WHEN的使用例項

SQL語句中CASE WHEN的使用例項

CASE 可能是 SQL 中被誤用最多的關鍵字之一。雖然你可能以前用過這個關鍵字來建立欄位,但是它還具有更多用法。例如,你可以在 WHERE 子句中使用 CASE

首先讓我們看一下 
CASE 的語法。在一般的 SELECT 中,其語法如下:

SELECT<myColumnSpec>=
CASE
WHEN<A>THEN<somethingA>
WHEN<B>THEN<somethingB>
ELSE<somethingE>
END 

在上面的程式碼中需要用具體的引數代替尖括號中的內容。下面是一個簡單的例子:

USE pubs
GO
SELECT


    Title,
    
'Price Range'=
    
CASE
        
WHEN price ISNULLTHEN'Unpriced'
        
WHEN price <10THEN'Bargain'
        
WHEN price BETWEEN10and20THEN'Average'
        
ELSE'Gift to impress relatives'
    
END
FROM titles
ORDERBY price
GO 

這是 
CASE 的典型用法,但是使用 CASE 其實可以做更多的事情。比方說下面的 GROUPBY 子句中的 CASE

SELECT'Number of Titles
'Count(*)
FROM titles
GROUPBY
    
CASE
        
WHEN price ISNULLTHEN'Unpriced'
        
WHEN price <10THEN'Bargain'
        
WHEN price BETWEEN10and20THEN'Average'
        
ELSE'Gift to impress relatives'
    
END
GO 

你甚至還可以組合這些選項,新增一個 
ORDERBY 子句,如下所示:

USE pubs
GO
SELECT
    
CASE
        
WHEN price ISNULLTHEN'Unpriced
'
        
WHEN price <10THEN'Bargain'
        
WHEN price BETWEEN10and20THEN'Average'
        
ELSE'Gift to impress relatives'
    
ENDAS Range,
    Title
FROM titles
GROUPBY
    
CASE
        
WHEN price ISNULLTHEN'Unpriced'
        
WHEN price <10THEN'Bargain'
        
WHEN price BETWEEN10and20THEN'Average'
        
ELSE'Gift to impress relatives'
    
END,
    Title
ORDERBY
    
CASE
        
WHEN price ISNULLTHEN'Unpriced'
        
WHEN price <10THEN'Bargain'
        
WHEN price BETWEEN10and20THEN'Average'
        
ELSE'Gift to impress relatives'
    
END,
    Title
GO 

注意,為了在 
GROUPBY 塊中使用 CASE,查詢語句需要在 GROUPBY 塊中重複 SELECT 塊中的 CASE 塊。

除了選擇自定義欄位之外,在很多情況下 
CASE 都非常有用。再深入一步,你還可以得到你以前認為不可能得到的分組排序結果集

參考:

相關推薦

SQL語句CASE WHEN的使用例項

CASE 可能是 SQL 中被誤用最多的關鍵字之一。雖然你可能以前用過這個關鍵字來建立欄位,但是它還具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。首先讓我們看一下 CASE 的語法。在一般的 SELECT 中,其語法如下:SELECT<myColumnSpec>=CASEWHE

SQL語句case when函式的用法

前一段時間進行一段比較複雜的資料庫業務查詢需要對查詢出來的資料進行分類統計 ,用到了資料庫的case函式,這時才注意到這個函式有兩種用。 一種是: case 欄位名 when 欄位值 then 值 else 值2 end 這一種是之前比較常用的一種方式,相當於是大部分

SQL語句的寫法:update語句 case...when 用法

update語句結合case when例子: 根據master_id和class_idx來更新資料 如圖: sql語句:update table_name   set ins_comp_id='111',bxgs_fl_id='111',total_money =  ca

SQL語句casewhen、then的使用

使用語法為:select `pro`.`id` AS `id`,`pro`.`title` AS `title`,`pro`.`name` AS `name`,`pro`.`ltime` AS `ltime`,`pro`.`place` AS `place`,`pro`.`l

sql語句CASE WHEN 搜尋語句

今天查詢資料庫時遇到一個問題,一個表中存了三種不同狀態的的記錄,即倉庫日誌表裡存了 領出,報廢,歸還三個狀態的欄位,而我需要做的操作是統計出一個人的領用總數量,報廢總數量,和歸還總數量,自己用了很多種方法,但都行不通,最後還是大神提供了case when語句才得以解決,所以寫

T-SQL語句case when then 多條件判斷

CASE    WHEN 條件1 THEN 結果1    WHEN 條件2 THEN 結果2    WHEN 條件3 THEN 結果3    WHEN 條件4 THEN 結果4 .........    WHEN 條件N THEN 結果N    ELSE 結果X END Case具有兩種格式。簡單Case函

【NCRE】---拼接SQL語句Case....When語句

#region 將答案和分數更新到資料庫中 李少然 2015年12月26日10:09:07 /// <summary> /// 將答案和分數更新到資料庫中 /// </summary> /// <param na

SQL語句CASE WHEN

CASE WHEN 基本概念 Case具有兩種格式:簡單Case函式和Case搜尋函式。 簡單Case函式: CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘0’ THEN ‘女’ ELSE ‘其他’ END Case搜尋函式:

SQL語句 select case when (轉)

CASE 可能是 SQL 中被誤用最多的關鍵字之一。雖然你可能以前用過這個關鍵字來建立欄位,但是它還具有更多用法。例如,你可以在 WHERE 子句中使用 CASE。 首先讓我們看一下 CASE 的語法。在一般的 SELECT 中,其語法如下: SELECT<myColu

SQL語句 Case具有兩種格式:簡單Case函式和Case搜尋函式

Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式CASE sex          WHEN '1' THEN '男'          WHEN '2' THEN '女'ELSE '其他' END--Case搜尋函式CASE WHEN sex = '1' THEN '男'

SQL的條件判斷語句case when zhen if,ifnull)用法

簡介: case具有兩種格式。簡單case函式和case搜尋函式。這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case部分將會被自動忽略。

sql語句多個union all的case when優化

今天有點空,打算把報表專案中前人留下的一段sql優化下。 原sql大致如下(刪除了設計公司資料的敏感資訊): select '現場司機' 環節,'勞斯萊斯' 品牌, 'CIQ 直接喂料' 採集專案, count(1) 統計數量 from test_table where

利用SQL語句casewhen、sum實現將表的一列變為多列

一、原表status的結構如圖所示:展示的主要欄位有addtime1(丟失時間)、addtime2(撿到時間)、status(狀態)1,表示成功;2 表示認領中;0表示未認領;二、現在報表設計的需求是統計一個月之內成功認領的個數、兩個月之內成功認領的個數、三個月之內成功認領以

SQL語句updatecase/when的寫法

將t_param_default,name為page_size的記錄的value,如果value大於50,將值修改為50,否則不變update t_param_default set value=  CASE     W

SQL語句case when在access的使用

select IIf(txtWidth=0,173,txtwidth) AS txtwidth,IIf(txtHeight=0,116,txtHeight) AS txtHeight  from table

SQL的條件判斷語句case when zhen)用法

簡介: case具有兩種格式。簡單case函式和case搜尋函式。這兩種方式,可以實現相同的功能。簡單case函式的寫法相對比較簡潔,但是和case搜尋函式相比,功能方面會有些限制,比如寫判定式。還有一個需要注重的問題,case函式只返回第一個符合條件的值,剩下的case

SQLcase when子句的使用(連續變數的區間分段統計場景)

某院系2018年計劃舉辦為期一週的學生電競通關能力預測比賽。現已進入決賽,有6位選手入圍。要求根據給定的兩張表如下所示: UserUser表( user_id int,—使用者ID user_name varchar(50),—使用者姓名 user_type int—使用者型別 ) Game

SQL的IF語句case when then

MySQL的IF既可以作為表示式用,也可在儲存過程中作為流程控制語句使用,如下是做為表示式使用: IF表示式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回

小隨筆 SQL語句的條件判斷CASE

做了這麼多年開發,不怕笑話,還真的很少用CASE語句,畢竟很多判斷實際上都是在邏輯層就做好了 不過,CASE用起來還是非常方便好用的。 小例子: 判斷Status引數值和當前欄位值哪個大,當前欄位值小就更改,否則就不更改。 update [Records] set Stat

SQLcase when then else end用法

一、簡單用法 case具有兩種格式。簡單case函式和case搜尋函式。 簡單case函式 SELECT s.s_id, s.s_name, s.s_sex, CASE WHEN s.s_sex = '1' THEN '男' WHEN s.s_s