【发布时间】:2015-01-16 20:52:54
【问题描述】:
我有一个基于以下查询显示饼图的报告:
SELECT
COUNT(COURTESY_CHECK.CHECK_NUMBER) AS SUM,
'FORWARDED' AS STATUS
FROM
COURTESY_CHECK
INNER JOIN CHECK_FORWARD
ON COURTESY_CHECK.ID = CHECK_FORWARD.COURTESY_CHECK_ID
WHERE
to_char(COURTESY_CHECK.DATE_RECEIVED, 'FMMonth') = ? AND
EXTRACT (YEAR FROM COURTESY_CHECK.DATE_RECEIVED) = ?
UNION ALL
SELECT
COUNT(COURTESY_CHECK.CHECK_NUMBER) AS SUM,
'RETURNED' AS STATUS
FROM
COURTESY_CHECK
INNER JOIN CHECK_RETURN
ON COURTESY_CHECK.ID = CHECK_RETURN.COURTESY_CHECK_ID
WHERE
to_char(COURTESY_CHECK.DATE_RECEIVED, 'FMMonth') = ? AND
EXTRACT (YEAR FROM COURTESY_CHECK.DATE_RECEIVED) = ?
UNION ALL
SELECT
COUNT(COURTESY_CHECK.CHECK_NUMBER) AS SUM,
'IPAC' AS STATUS
FROM
COURTESY_CHECK
INNER JOIN CHECK_DEPOSIT
ON COURTESY_CHECK.ID = CHECK_DEPOSIT.COURTESY_CHECK_ID
WHERE
COURTESY_CHECK.CHECK_STATUS = 'CLOSED' AND
to_char(COURTESY_CHECK.DATE_RECEIVED, 'FMMonth') = ? AND
EXTRACT (YEAR FROM COURTESY_CHECK.DATE_RECEIVED) = ?
UNION ALL
SELECT
COUNT(COURTESY_CHECK.CHECK_NUMBER) AS SUM,
'PENDING' AS STATUS
FROM
COURTESY_CHECK
WHERE
COURTESY_CHECK.CHECK_STATUS = 'PENDING' AND
to_char(COURTESY_CHECK.DATE_RECEIVED, 'FMMonth') = ? AND
EXTRACT (YEAR FROM COURTESY_CHECK.DATE_RECEIVED) = ?
UNION ALL
SELECT
COUNT(COURTESY_CHECK.CHECK_NUMBER) AS SUM,
'DEPOSITED' AS STATUS
FROM
COURTESY_CHECK
WHERE
COURTESY_CHECK.CHECK_STATUS = 'DEPOSITED' AND
to_char(COURTESY_CHECK.DATE_RECEIVED, 'FMMonth') = ? AND
EXTRACT (YEAR FROM COURTESY_CHECK.DATE_RECEIVED) = ?
我的问题在于这部分:
WHERE
to_char(COURTESY_CHECK.DATE_RECEIVED, 'FMMonth') = ? AND
EXTRACT (YEAR FROM COURTESY_CHECK.DATE_RECEIVED) = ?
Month 和 Year 参数基于从以下查询动态创建的级联参数:
SELECT
DISTINCT to_char(COURTESY_CHECK.DATE_CREATED, 'Month') AS MN,
EXTRACT (YEAR FROM COURTESY_CHECK.DATE_CREATED) AS YR
FROM COURTESY_CHECK
我发现使用'Month' 会提取月份名称和尾随空格,而'FMMonth' 会截断月份名称并删除空格。
我已经尝试对这两个查询使用'Month' 并看到饼图应该位于的空白区域。对这两个查询使用'FMMonth' 根本不会给我一个饼图(空的或其他的)。将'FMMonth' 用于其中一个也不起作用。
我使用to_char,因为这就是我在级联参数下拉菜单中显示月份名称的方式。我希望报告的用户看到月份名称而不是月份编号。
我不知道为什么饼图没有出现。
【问题讨论】:
-
很难想象你对报告的意思,但是当你看到的东西和没有匹配的格式时,你会看到不同的东西,这表明当两者都是
FMMonth时,你正在获取数据,因为你会想到,报告/图表工具有问题。当您直接在 SQL*Plus 中运行查询时会发生什么?我假设您确实有匹配的数据,尽管您比较的两个日期来自不同的列(创建/接收)。