作者blReader (野火)
站內Database
標題[SQL ] 請問如果查詢條件無資料能否顯示筆數為 0 呢?
時間Tue Dec 18 13:59:04 2012
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