最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

sqlserver中Case的使用方法(上下篇)第1/2頁

 更新時間:2010年09月12日 23:31:21   作者:  
Case具有兩種格式。簡單Case函數(shù)和Case搜索函數(shù)。
復(fù)制代碼 代碼如下:

--簡單Case函數(shù)
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函數(shù)
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END

這兩種方式,可以實現(xiàn)相同的功能。簡單Case函數(shù)的寫法相對比較簡潔,但是和Case搜索函數(shù)相比,功能方面會有些限制,比如寫判斷式。
還有一個需要注意的問題,Case函數(shù)只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。
復(fù)制代碼 代碼如下:

--比如說,下面這段SQL,你永遠無法得到“第二類”這個結(jié)果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一類'
WHEN col_1 IN ('a') THEN '第二類'
ELSE'其他' END

下面我們來看一下,使用Case函數(shù)都能做些什么事情。

 

一,已知數(shù)據(jù)按照另外一種方式進行分組,分析。

有如下數(shù)據(jù):(為了看得更清楚,我并沒有使用國家代碼,而是直接用國家名作為Primary Key)

國家(country) 人口(population)
中國 600
美國 100
加拿大 100
英國 200
法國 300
日本 250
德國 200
墨西哥 50
印度 250


根據(jù)這個國家人口數(shù)據(jù),統(tǒng)計亞洲和北美洲的人口數(shù)量。應(yīng)該得到下面這個結(jié)果。

人口
亞洲 1100
北美洲 250
其他 700


想要解決這個問題,你會怎么做?生成一個帶有洲Code的View,是一個解決方法,但是這樣很難動態(tài)的改變統(tǒng)計的方式。
如果使用Case函數(shù),SQL代碼如下:

復(fù)制代碼 代碼如下:

SELECT SUM(population),
CASE country
WHEN '中國' THEN '亞洲'
WHEN '印度' THEN '亞洲'
WHEN '日本' THEN '亞洲'
WHEN '美國' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END
FROM Table_A
GROUP BY CASE country
WHEN '中國' THEN '亞洲'
WHEN '印度' THEN '亞洲'
WHEN '日本' THEN '亞洲'
WHEN '美國' THEN '北美洲'
WHEN '加拿大' THEN '北美洲'
WHEN '墨西哥' THEN '北美洲'
ELSE '其他' END;


同樣的,我們也可以用這個方法來判斷工資的等級,并統(tǒng)計每一等級的人數(shù)。SQL代碼如下;
復(fù)制代碼 代碼如下:

SELECT
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600 THEN '2'
WHEN salary > 600 AND salary <= 800 THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END salary_class,
COUNT(*)
FROM Table_A
GROUP BY
CASE WHEN salary <= 500 THEN '1'
WHEN salary > 500 AND salary <= 600 THEN '2'
WHEN salary > 600 AND salary <= 800 THEN '3'
WHEN salary > 800 AND salary <= 1000 THEN '4'
ELSE NULL END;

二,用一個SQL語句完成不同條件的分組。

 

有如下數(shù)據(jù)

國家(country) 性別(sex) 人口(population)
中國 1 340
中國 2 260
美國 1 45
美國 2 55
加拿大 1 51
加拿大 2 49
英國 1 40
英國 2 60


按照國家和性別進行分組,得出結(jié)果如下

國家
中國 340 260
美國 45 55
加拿大 51 49
英國 40 60


普通情況下,用UNION也可以實現(xiàn)用一條語句進行查詢。但是那樣增加消耗(兩個Select部分),而且SQL語句會比較長。
下面是一個是用Case函數(shù)來完成這個功能的例子

復(fù)制代碼 代碼如下:

SELECT country,
SUM( CASE WHEN sex = '1' THEN
population ELSE 0 END), --男性人口
SUM( CASE WHEN sex = '2' THEN
population ELSE 0 END) --女性人口
FROM Table_A
GROUP BY country;

這樣我們使用Select,完成對二維表的輸出形式,充分顯示了Case函數(shù)的強大。
三,在Check中使用Case函數(shù)。
在Check中使用Case函數(shù)在很多情況下都是非常不錯的解決方法??赡苡泻芏嗳烁揪筒挥肅heck,那么我建議你在看過下面的例子之后也嘗試一下在SQL中使用Check。
下面我們來舉個例子
公司A,這個公司有個規(guī)定,女職員的工資必須高于1000塊。如果用Check和Case來表現(xiàn)的話,如下所示
復(fù)制代碼 代碼如下:

CONSTRAINT check_salary CHECK
( CASE WHEN sex = '2'
THEN CASE WHEN salary > 1000
THEN 1 ELSE 0 END
ELSE 1 END = 1 )

如果單純使用Check,如下所示
復(fù)制代碼 代碼如下:

CONSTRAINT check_salary CHECK
( sex = '2' AND salary > 1000 )

女職員的條件倒是符合了,男職員就無法輸入了。

相關(guān)文章

  • SQL Server 2019 密碼修改的實現(xiàn)步驟

    SQL Server 2019 密碼修改的實現(xiàn)步驟

    為了保護數(shù)據(jù)庫中的數(shù)據(jù),我們經(jīng)常需要定期更改數(shù)據(jù)庫用戶的密碼,本文主要介紹了SQL Server 2019 密碼修改的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • SQLServer三種開窗函數(shù)詳細用法

    SQLServer三種開窗函數(shù)詳細用法

    本文主要介紹了SQLServer三種開窗函數(shù)詳細用法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • SQL Server存儲過程中編寫事務(wù)處理的方法小結(jié)

    SQL Server存儲過程中編寫事務(wù)處理的方法小結(jié)

    這篇文章主要介紹了SQL Server存儲過程中編寫事務(wù)處理的方法,結(jié)合實例形式總結(jié)分析了三種存儲過程中編寫事務(wù)處理的方法,具有一定參考借鑒價值,需要的朋友可以參考下
    2016-03-03
  • SQLServer導(dǎo)入數(shù)據(jù)圖文方法

    SQLServer導(dǎo)入數(shù)據(jù)圖文方法

    有時需要將別的數(shù)據(jù)庫的內(nèi)容,導(dǎo)入到當前數(shù)據(jù)庫中,就需要導(dǎo)入數(shù)據(jù)即可。下面是詳細的圖文方法。
    2010-07-07
  • SQL Server 2012使用Offset/Fetch Next實現(xiàn)分頁數(shù)據(jù)查詢

    SQL Server 2012使用Offset/Fetch Next實現(xiàn)分頁數(shù)據(jù)查詢

    在Sql Server 2012之前,實現(xiàn)分頁主要是使用ROW_NUMBER(),在SQL Server2012,可以使用Offset ...Rows Fetch Next ... Rows only的方式去實現(xiàn)分頁數(shù)據(jù)查詢,具體代碼詳解大家參考下本文
    2017-07-07
  • SQL 合并多行記錄的方法總匯

    SQL 合并多行記錄的方法總匯

    SQL 合并多行記錄的方法總匯,方便有此需要的朋友參考。
    2009-06-06
  • SQL Server簡單查詢示例匯總

    SQL Server簡單查詢示例匯總

    本文簡單講了簡單查詢語句以及需要注意的地方,列舉了具體實例,并配圖解析。有需要的朋友可以看下
    2016-12-12
  • 設(shè)置SQL Server端口的詳細步驟

    設(shè)置SQL Server端口的詳細步驟

    在SQL Server中,配置端口是確保數(shù)據(jù)庫服務(wù)能夠正確通信的重要步驟,無論是為了提高安全性還是滿足特定的網(wǎng)絡(luò)配置需求,正確設(shè)置SQL Server的端口都是必要的,本文將詳細介紹如何設(shè)置SQL Server的端口,需要的朋友可以參考下
    2024-08-08
  • SQL Server 比較日期大小的方法

    SQL Server 比較日期大小的方法

    這篇文章介紹了SQL Server 比較日期大小的方法,有需要的朋友可以參考一下
    2013-09-09
  • 解析SQL Server聚焦移除(Bookmark Lookup、RID Lookup、Key Lookup)

    解析SQL Server聚焦移除(Bookmark Lookup、RID Lookup、Key Lookup)

    本文主要講解索引性能優(yōu)化,著重對Bookmark Lookup、RID Lookup、Key Lookup三者進行移除的實現(xiàn)進行解析,以此來提高查詢性能。希望對大家有所幫助
    2016-12-12

最新評論

阿瓦提县| 四会市| 渝北区| 胶南市| 黄石市| 福州市| 汪清县| 库尔勒市| 清镇市| 资兴市| 南通市| 饶阳县| 日喀则市| 东阿县| 博乐市| 靖西县| 博野县| 武城县| 弥勒县| 东至县| 彝良县| 南开区| 原平市| 镶黄旗| 仙游县| 山阴县| 湖北省| 磐石市| 阿拉善盟| 孟连| 海伦市| 延津县| 大冶市| 台东县| 大名县| 探索| 库车县| 邯郸市| 鄂温| 大悟县| 行唐县|