日韩欧美国产精品免费一二-日韩欧美国产精品亚洲二区-日韩欧美国产精品专区-日韩欧美国产另-日韩欧美国产免费看-日韩欧美国产免费看清风阁

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

使用coalesce和nullif的組合來減輕寫sql的工作量

admin
2011年8月2日 17:11 本文熱度 3265

今天幫朋友調(diào)了一個網(wǎng)站,無意中翻了一個sp,看到了一段很長的select語句,這個select語句之所以長,是因為有好幾個一般復雜的case語句跟在select的后面。我們摘取其中的一個字段的邏輯規(guī)則和數(shù)據(jù)來做我們的測試數(shù)據(jù):


create table tbl (id int, type_a int)

insert into tbl values (1000,1000)
insert into tbl values (999,999)
insert into tbl values (998,998)
insert into tbl values (997,997)
insert into tbl values (996,996)
insert into tbl values (995,null)
insert into tbl values (994,null)
insert into tbl values (993,null)
insert into tbl values (992,null)
insert into tbl values (991,null)

邏輯非常簡單:當type_a為997或null的時候,我們要讓輸出的type_a字段值為0。
OK,這個SQL語句當然有多種寫法,朋友的sql是這樣寫的:


select
    
case
        
when (type_a is null or type_a=997then 0
        
else type_a
    
end as type_a
from tbl

如果需要控制的字段一多,那這個及時已經(jīng)使用了縮進的select也看起來很復雜了,時間久了想改動這個sp的邏輯就有些吃力了,我們常常在做計劃時會說“半小時搞定這個問題”,但是往往在做的時候都會超過這個時間,原因就在于我們總有從一團亂麻中找到入手點。復雜的代碼和邏輯往往是解決問題中難啃的骨頭。那么有什么好辦法優(yōu)化一下嗎?


select coalesce(nullif(type_a,997),0as type_a from tbl

Well,上面寫了6行的sql就被這1行所替代了。

nullif接受兩個參數(shù),如果兩個參數(shù)相等,那么返回null,否則返回第一個參數(shù)
coalesce接受N個參數(shù),返回第一個不為null的參數(shù)

So,當您遇到處理一個如下所示的計算工資的問題的時候,不妨這樣來解決:


create table salary (e_id uniqueidentifier, byMonth int, byHalfYear int, byYear int)

insert into salary values (newid(),9000,null,null)
insert into salary values (newid(),null,60000,null)
insert into salary values (newid(),null,null,150000)

每個雇員有3種薪資計算方式(按月,按半年,按年)來發(fā)放工資,如果我們想統(tǒng)計每個員工的年薪,那這樣一句就夠了:


select e_id,coalesce(byMonth*12,byHalfYear*2,byYear) as salary_amount from salary

結(jié)果:


e_id                                                 salary_amount
------------------------------------ -------------
8935330D-2B73-4FEF-941A-768D7A8CCB6C 108000
52A3CE16
-74FD-4D5D-BB4F-F5F67A1E9D2F 120000
06B6B924
-EAB2-4187-B733-EBB56B62E793 150000

參考:
COALESCE (Transact-SQL)
NULLIF (Transact-SQL)

該文章在 2011/8/2 17:11:42 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 精品一区二区三区在线视频 | 97青青 | 国产精品女同一区二区在线 | 亚洲人成人一区二区三区 | 日本一本二本三区免费免费高清 | 欧美乱妇激情在线播 | 国产乡下三级全黄三级 | 五月婷婷丁香色 | 日韩亚洲国产欧美在线看片 | 绮炫影院| 一区二区三区四区在线播放视频 | 国产隔着超薄丝袜进入 | 三区在线播放 | 南瓜影视 | 永久免费啪 | 网站资源多午夜激情影院 | 91视频直播 | 国产伦精品一区二区三 | 欧美无极品在线观看 | 亚洲国产欧美日韩精品网 | 蜜桃豆www久 | 亚洲第一页中文字幕 | 偷人精品一区二区 | 国色天香天天影院综合网 | 未满十八勿入网站 | 亚洲大片精 | 日本免费一区二区三区在线视频 | 另类熟女伦乱视频 | 亚洲成aⅴ人片久青草影院 国产91精品系列在线观看 | 欧美日韩另 | 国产一区二区三区四区五区 | 中日韩精品一区二区三区成人 | 亚洲日本ⅴa中文字幕 | 91免费视视频在线观看 | 日韩欧美在线国产一区二区 | 国产精品精品自在线拍 | 日韩一区二区三区四区五区 | 国产一二三 | xxxx迷奷在线观看 | 国产精品日产三 | 国产鲁鲁视频在线观看 |