如果不需要tool表也可以实现,那样最好,谢谢了
数据表“T_IVR_DETAIL_LOG”
SELECT
TO_CHAR (CURRENTDT, 'hh24') AS HH,
COUNT (*) num
FROM
T_IVR_DETAIL_LOG
WHERE
TO_CHAR (
TRUNC (CURRENTDT),
'yyyy-mm-dd'
) = (
SELECT
TO_CHAR (SYSDATE, 'yyyy-mm-dd')
FROM
DUAL
)
GROUP BY
TO_CHAR (CURRENTDT, 'hh24')
ORDER BY
TO_CHAR (CURRENTDT, 'hh24')
小时表
SELECT
T.HH,
T.NUM
FROM
SYS_TOOL T
ORDER BY T.HH
或者这样。我举个简单的例子。
SELECT
ST,HH,
COUNT(TIDL.*)
FROM
SYS_TOOL ST
LEFT JOIN T_IVR_DETAIL_LOG TIDL
ON ST.HH = TO_CHAR(TIDL.CURRENTDT, 'HH24')
GROUP BY ST.HH
ORDER BY ST.HH;
SET @Time='1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20';
SELECT ht.businessAt,IFNULL(st.NUM,0) NUM FROM (
select substring_index(substring_index(@Time,',',help_topic_id+1),',',-1) as businessAt
from
mysql.help_topic
where help_topic_id<(length( @Time)-length(replace( @Time,',',''))+1)
)ht
LEFT JOIN SYS_TOOL st ON st.HH = ht.businessAt
ORDER BY CAST(ht.businessAt AS UNSIGNED int ) ASC
这个sql用到了你要的业务数据表,和mysql系统表,若是你不想用系统表,那也可以参考这个sql转化
SELECT
st.HH,
IFNULL(sa.NUM,0)
FROM
SYS_TOOL st
LEFT JOIN SYS_AAA sa ON sa.HH = st.HH
ORDER BY st.HH ASC
select st.HH, nvl(t.num, 0)
from SYS_TOOL st
left join (SELECT TO_CHAR(CURRENTDT, 'hh24') AS HH,
COUNT(*) num
FROM T_IVR_DETAIL_LOG
WHERE TO_CHAR(
TRUNC(CURRENTDT),
'yyyy-mm-dd'
) = (
SELECT TO_CHAR(SYSDATE, 'yyyy-mm-dd')
FROM DUAL
)
GROUP BY TO_CHAR(CURRENTDT, 'hh24')) t on st.HH = t.HH order by HH;