作者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
1F:→ FantasyRyu:此乃OUTER JOIN也。 12/18 14:14
这段早先也是用 OUTER JOIN 但是无解, 故改成目前利用SUN加总笔数的方式,
刚刚发现问题在於无资料, 也就没有日期,
那麽即使此用 OUTER JOIN 也同样找不到 2012/12/18 这一天的资料,
刚刚跟主管讨论, 好像写到这里已经差不多了,
但也不算是资料面的缺陷, 可能前端程式要修改一下, 谢谢你~~
※ 编辑: blReader 来自: 210.59.164.121 (12/18 14:52)
2F:→ pooznn:用NVL去判断COUNT(*) 为 NULL 时填 0 12/18 18:16
3F:推 plover:要建 calendar table ((好用)) 12/18 21:38