特別記錄一下,供以後自己參考!
一般我們使用ISNULL()會傳入兩個參數,
當第一個參數為NULL時,則會回傳第二個參數的值,
而COALESCE()不同於ISNULL(),在於可以傳入多個參數,
一直到第一個非NULL值的參數出現才回傳,
利用這個特性,也可以簡化當我們使用ISNULL()與CASE WHEN的搭配!!
--抓取一週內第一天賣出去的金額 --建立範例暫存表 IF (select OBJECT_ID('tempdb..#Sample')) IS NOT NULL DROP TABLE #Sample CREATE TABLE #Sample (Pname varchar(10), Mon INT, Tue INT, Wed INT, Thu INT, Fri INT)
--新增測試資料 INSERT INTo #Sample (Pname,Mon,Thu) VALUES ('pizza',125,200) INSERT INTo #Sample (Pname,Wed) VALUES ('cookie',50) INSERT INTo #Sample (Pname,Tue,Thu,Fri) VALUES ('wine',300,250,700)
--ISNULL、CASE WHEN select Pname,SALE_1st=(CASE WHEN ISNULL(Mon,0)>0 THEN Mon WHEN ISNULL(Tue,0)>0 THEN Tue WHEN ISNULL(Wed,0)>0 THEN Wed WHEN ISNULL(Thu,0)>0 THEN Thu WHEN ISNULL(Fri,0)>0 THEN Fri ELSE 0 END) from #Sample --COALESCE select Pname,SALE_1st=COALESCE(Mon,Tue,Wed,Thu,Fri) from #Sample
--執行結果 Pname SALE_1st ---------- ----------- pizza 125 cookie 50 wine 300
參考自
沒有留言:
張貼留言