国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

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

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

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


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

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


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

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

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

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種薪資計算方式(按月,按半年,按年)來發放工資,如果我們想統計每個員工的年薪,那這樣一句就夠了:


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

結果:


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 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲无码国产精品 | 国产成人亚洲欧美二区综合 | 在线日韩日本国产综合 | 亚洲国产精品自在拍在 | 久久久无码精品亚洲A片软件 | 欧美国产另类首页 | 国产美女喷水白浆在线播放 | 成人欧美一区二区三区黑人 | 日韩中文字幕免费视频 | 在线观看国产三级视频 | 人妻精品秘一区二区视频解说高清完整版免费在线观 | 男女18禁啪啪无遮挡激烈网站 | 中文无码伦av中文字幕 | 国产伦精品一区二区三区精品 | 香港经典a毛片免费观看…伊人色 | 亚洲精华国产精华精华 | 国产综合在线观看 | 亚洲精品乱码久久久久久日本蜜臀 | 日韩免费夜色影院 | 欧美人在线一区二区三区 | 亚洲成人中文字幕 | 国产日产欧美a一级在线 | 精品国产乱码久久久久久浪潮 | 亚洲色欲色欲www在线观看 | 亚洲精品色情AAA片 亚洲精品色情APP在线下载观看 | 午夜免费啪频欢看视 | 亚洲人妻视频合集 | 欧美日韩国产中文高清视频 | 午夜精品一区二区三区三上悠亚 | 91精品国产乱码久久无码 | 国产成人精品日本亚洲第一区 | 91久久夜色精品国产伊甸园 | 韩国精品AV一区二区三区 | 欧美人与动牲猛交xxxxbbbb | 日日夜夜天天人人精品综合 | 亚洲一区二区三区精品视频在线观看 | 性饥渴艳妇性色生活片在线播放 | 无码久久流水呻吟 | 精品无码久久久久久午夜 | 日本黄A级A片国产免费 | 亚洲中文字幕婷婷在线 |