Oracle的條件分支查詢其實跟java的條件分支語法沒啥太大的區別,只不過java多了一個switch關鍵字而已。看例子:
SQL> SELECT CASE WHEN SUM(t1.TOTALTICKET) is null THEN 0 ELSE SUM(t1.TOTALTICKET) END totalTicket 2 FROM T_WLF_CUSTOM_RECORD t1 WHERE t1.ACTIVITYID=4001 3 AND t1.INVITERMSISDN='16682318566'; TOTALTICKET ----------- 10086
這里針對金額的累計和做了一個處理,如果總數取到的是null,則轉為0,否則按原總數返回。當然這段邏輯也可以在代碼里寫。我們再看一個例子:
SQL> select LASTMODIFYER,count(CASE WHEN type=1 THEN 1 ELSE null END) 邀請人黑名單, count(CASE WHEN type=2 THEN 1 ELSE null END) 排行榜黑名單 from t_wlf_blacklist where hasdelete is null group by LASTMODIFYER; LASTMODIFYER 邀請人黑名單 排行榜黑名單 ---------------- ------------ ------------ admin02 1 0 admin01 9888 132
上面的查詢可以減少我們一次select操作。