亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

sqlserver Case函數應用介紹

2024-08-31 00:58:25
字體:
來源:轉載
供稿:網友

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

這兩種方式,可以實現相同的功能。簡單Case函數的寫法相對比較簡潔,但是和Case搜索函數相比,功能方面會有些限制,比如寫判斷式。
還有一個需要注意的問題,Case函數只返回第一個符合條件的值,剩下的Case部分將會被自動忽略。
--比如說,下面這段SQL,你永遠無法得到“第二類”這個結果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一類'
         WHEN col_1 IN ('a')       THEN '第二類'
ELSE'其他' END

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

一,已知數據按照另外一種方式進行分組,分析。

有如下數據:(為了看得更清楚,我并沒有使用國家代碼,而是直接用國家名作為Primary Key)
國家(country)    人口(population)
中國    600
美國    100
加拿大    100
英國    200
法國    300
日本    250
德國    200
墨西哥    50
印度    250

根據這個國家人口數據,統計亞洲和北美洲的人口數量。應該得到下面這個結果。
洲    人口
亞洲    1100
北美洲    250
其他    700

想要解決這個問題,你會怎么做?生成一個帶有洲Code的View,是一個解決方法,但是這樣很難動態的改變統計的方式。
如果使用Case函數,SQL代碼如下:
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;

同樣的,我們也可以用這個方法來判斷工資的等級,并統計每一等級的人數。SQL代碼如下;
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語句完成不同條件的分組。

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

按照國家和性別進行分組,得出結果如下
國家    男    女
中國    340    260
美國    45    55
加拿大    51    49
英國    40    60

普通情況下,用UNION也可以實現用一條語句進行查詢。但是那樣增加消耗(兩個Select部分),而且SQL語句會比較長。
下面是一個是用Case函數來完成這個功能的例子
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函數的強大。

三,在Check中使用Case函數。

在Check中使用Case函數在很多情況下都是非常不錯的解決方法??赡苡泻芏嗳烁揪筒挥肅heck,那么我建議你在看過下面的例子之后也嘗試一下在SQL中使用Check。
下面我們來舉個例子
公司A,這個公司有個規定,女職員的工資必須高于1000塊。如果用Check和Case來表現的話,如下所示
CONSTRAINT check_salary CHECK
           ( CASE WHEN sex = '2'
                  THEN CASE WHEN salary > 1000
                        THEN 1 ELSE 0 END
                  ELSE 1 END = 1 )

如果單純使用Check,如下所示
CONSTRAINT check_salary CHECK
           ( sex = '2' AND salary > 1000 )

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩欧美日韩大片| 国产精品高清在线观看| 亚洲欧美国产va在线影院| 亚洲欧美成人在线| 成人午夜在线视频一区| 日韩经典中文字幕在线观看| 国产精品一区二区久久久久| 欧美精品一区三区| 最近2019中文字幕在线高清| 欧美日韩亚洲成人| 日韩av成人在线| 亚洲电影免费在线观看| 中文字幕欧美专区| 久久综合网hezyo| 精品香蕉在线观看视频一| 久久成人国产精品| 国产97色在线|日韩| 秋霞av国产精品一区| 日韩综合视频在线观看| 欧美日韩国产999| 成人xvideos免费视频| 精品久久久久久久久久久| 日韩在线视频导航| 亚洲国产欧美精品| 国产视频在线观看一区二区| 精品久久久精品| 欧美在线国产精品| 亚洲欧洲日韩国产| 国产精品爱久久久久久久| 日韩高清电影免费观看完整| 精品成人乱色一区二区| 亚洲在线视频观看| 久久精品国产电影| 欧美成人亚洲成人日韩成人| 亚洲毛片在线观看.| 久久精品99久久久久久久久| 亚洲第一福利视频| 久久91亚洲精品中文字幕奶水| 亚洲自拍偷拍视频| 成人免费观看a| 日韩欧美国产黄色| 亚洲男人天堂2024| 成人免费福利视频| 久久视频在线观看免费| 亚洲美腿欧美激情另类| 在线亚洲午夜片av大片| 日韩大陆欧美高清视频区| 在线观看日韩专区| 日本在线观看天堂男亚洲| 国产精品久久久久免费a∨| 国内精品国产三级国产在线专| 欧美在线视频网| 国产精品欧美在线| 国产精品无av码在线观看| 中文字幕亚洲二区| 久久久久久久国产| 亚洲美女av网站| 亚洲精品一区二区三区不| 91亚洲国产成人精品性色| 日韩精品视频在线免费观看| 亚洲三级 欧美三级| www.亚洲人.com| 欧美又大粗又爽又黄大片视频| 亚洲韩国日本中文字幕| 国产日韩欧美在线看| 欧美日韩美女视频| 91av国产在线| 欧美黑人国产人伦爽爽爽| 国产成人免费91av在线| 久久久伊人欧美| 国产精品天天狠天天看| 精品高清一区二区三区| 日韩小视频网址| 欧美精品免费播放| 在线观看亚洲区| 亚洲乱码国产乱码精品精天堂| 色综合色综合久久综合频道88| 91禁外国网站| 亚洲欧美日韩天堂| 久久99国产精品久久久久久久久| 国产精品私拍pans大尺度在线| 日韩在线视频中文字幕| 欧美日韩国产专区| 国产精品日韩久久久久| 日韩网站免费观看高清| 国产精彩精品视频| 国产成人av在线| 日韩网站在线观看| 欧美视频第一页| 亚洲一区二区三区乱码aⅴ| 国产精品亚洲аv天堂网| 亚洲毛片在线观看| 日韩中文字幕视频在线观看| 在线播放国产精品| 亚洲经典中文字幕| 日韩免费在线播放| 国产精品激情自拍| 国产精品老女人精品视频| 欧美做爰性生交视频| 久久精品一本久久99精品| 成人精品一区二区三区电影免费| 国产国语刺激对白av不卡| 欧洲精品在线视频| 亚洲电影第1页| 夜夜躁日日躁狠狠久久88av| 中文字幕在线看视频国产欧美| 日韩av影视在线| 久久久女女女女999久久| 成人性生交大片免费观看嘿嘿视频| 91精品国产乱码久久久久久久久| 久久亚洲精品毛片| 国产91av在线| 久久久久久久久久久久久久久久久久av| 日韩成人av在线播放| 亚洲丝袜av一区| 亚洲自拍av在线| 久久99热这里只有精品国产| 欧美最猛性xxxx| 欧美午夜电影在线| 在线视频国产日韩| 国产成人在线一区二区| 日韩精品极品毛片系列视频| 亚洲激情在线视频| 欧美性xxxxhd| 国产亚洲欧洲高清| 97超碰色婷婷| 久久综合伊人77777尤物| 日韩电影中文字幕在线| 欧美电影免费看| 久久亚洲国产精品| 欧洲成人午夜免费大片| 性金发美女69hd大尺寸| 欧美成年人视频网站欧美| 精品亚洲va在线va天堂资源站| 日韩av中文字幕在线| 精品亚洲一区二区| 久久偷看各类女兵18女厕嘘嘘| 亚洲自拍小视频免费观看| 久久久国产精品视频| 亚洲综合中文字幕在线| 69**夜色精品国产69乱| 国产精品久久久av| 国产精品96久久久久久| 国产精品天天狠天天看| 亚洲美女动态图120秒| 国产精品久久久久久久久久新婚| 国产一区二区三区在线观看视频| 国产成人自拍视频在线观看| 伊人久久久久久久久久久| 欧美综合激情网| 久久免费视频这里只有精品| 岛国av在线不卡| 91午夜在线播放| 日韩精品高清在线观看| 日产精品久久久一区二区福利| 亚洲人在线视频| 国产精品揄拍一区二区| 国产欧美亚洲精品| 亚洲欧美成人一区二区在线电影| 日韩美女在线播放| 日韩av免费观影| 亚洲自拍中文字幕| 亚洲a成v人在线观看| 最新91在线视频|