看板 Database 關於我們 聯絡資訊
Oracle 我剛串了一段統計筆數資料 發現只要日期區間內有資料, 那就可以顯示 0 筆的資料, 但如果日期區間內沒有任何資料, 執行結果就變成是空的, 是完全空的, 有沒有辦法讓無資料的時候也顯示出 0 筆資料呢?? 謝謝~~ 營運期間加卡日期區間 2012/12/13 顯示資料如下 -------------------------------------------------------------------------------- CUSTOMER_ID SHORT_TITLE STORE_NAME SHOP_ID SHOP_NAME SD_DATE, SUM_CNT AE10201 A集團 A集團子公司1 101 第一直營店 2012/12/13 0 C235213 B集團 B集團子公司1 203 天母店 2012/12/17 2 E588001 B集團 B集團子公司1 204 大直店 2012/12/13 8 FOCUS C... C... 1 313 忠孝店 2012/12/13 0 2012/12/18 顯示資料如下 -------------------------------------------------------------------------------- CUSTOMER_ID SHORT_TITLE STORE_NAME SHOP_ID SHOP_NAME SD_DATE, SUM_CN (全空) 能不能做出像這樣的結果呢? -------------------------------------------------------------------------------- CUSTOMER_ID SHORT_TITLE STORE_NAME SHOP_ID SHOP_NAME SD_DATE, SUM_CN AE10201 A集團 A集團子公司1 101 第一直營店 2012/12/18 0 C235213 B集團 B集團子公司1 203 天母店 2012/12/18 0 E588001 B集團 B集團子公司1 204 大直店 2012/12/18 0 FOCUS C... C... 1 313 忠孝店 2012/12/18 0 ※ 附上目前的語法 SELECT CUSTOMER_ID, SHORT_TITLE, STORE_NAME, SHOP_ID, SHOP_NAME, STANDBY_DATE, SUM(CNT) SUM_CNT FROM (SELECT SD.CUSTOMER_ID, C.SHORT_TITLE, C.STORE_NAME, S.SHOP_ID, S.SHOP_NAME, SD.STANDBY_DATE, COUNT(*) CNT FROM IMS_HD.STANDBY_EMP SD, IMS_HD.CALL_SHOP S, ERP_PROJECT.CUSTOMER C WHERE SD.SHOP_KEY = S.SHOP_KEY AND SD.CUSTOMER_ID = C.CUSTOMER_ID AND SD.STANDBY_DATE = '2012/12/13' GROUP BY SD.CUSTOMER_ID, C.SHORT_TITLE, C.STORE_NAME, S.SHOP_ID, S.SHOP_NAME, SD.STANDBY_DATE UNION SELECT DISTINCT C.CUSTOMER_ID, C.SHORT_TITLE, C.STORE_NAME, S.SHOP_ID, S.SHOP_NAME, SD.STANDBY_DATE, 0 CNT FROM ERP_PROJECT.CUSTOMER C, IMS_HD.CALL_SHOP S, IMS_HD.STANDBY_EMP SD WHERE C.CUSTOMER_ID = S.CUSTOMER_ID AND C.CUSTOMER_ID IN (SELECT P.CUSTOMER_ID FROM ERP_PROJECT.PROJECT P JOIN ERP_PROJECT.PROJECT_STAGE G ON G.PROJECT_ID = P.PROJECT_ID AND (G.STAGE_ID = 'G1' OR G.STAGE_ID = 'H1') AND TO_DATE('2012/12/13', 'yyyy/mm/dd') BETWEEN G.STAGE_DATE_B AND G.STAGE_DATE_E)) GROUP BY CUSTOMER_ID, SHORT_TITLE, STORE_NAME, SHOP_ID, SHOP_NAME, STANDBY_DATE ORDER BY CUSTOMER_ID, SHOP_ID, SHOP_NAME -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.59.164.121
FantasyRyu:此乃OUTER JOIN也。 12/18 14:14
這段早先也是用 OUTER JOIN 但是無解, 故改成目前利用SUN加總筆數的方式, 剛剛發現問題在於無資料, 也就沒有日期, 那麼即使此用 OUTER JOIN 也同樣找不到 2012/12/18 這一天的資料, 剛剛跟主管討論, 好像寫到這裡已經差不多了, 但也不算是資料面的缺陷, 可能前端程式要修改一下, 謝謝你~~ ※ 編輯: blReader 來自: 210.59.164.121 (12/18 14:52)
pooznn:用NVL去判斷COUNT(*) 為 NULL 時填 0 12/18 18:16
plover:要建 calendar table ((好用)) 12/18 21:38