【问题标题】:oracle apex chart - line graph sql?oracle顶点图表-折线图sql?
【发布时间】:2015-01-10 21:40:52
【问题描述】:
select count(case when extract(month from C_DATE) = 1 then 1 end) as Jan,
   count(case when extract(month from C_DATE) = 2 then 1 end) as feb,
   count(case when extract(month from C_DATE) = 3 then 1 end) as mar,
   count(case when extract(month from C_DATE) = 4 then 1 end) as april,
   count(case when extract(month from C_DATE) = 5 then 1 end) as may,
   count(case when extract(month from C_DATE) = 6 then 1 end) as jun,
   count(case when extract(month from C_DATE) = 7 then 1 end) as jul,
   count(case when extract(month from C_DATE) = 8 then 1 end) as aug,
   count(case when extract(month from C_DATE) = 9 then 1 end) as sep,
   count(case when extract(month from C_DATE) = 10 then 1 end) as oct,
   count(case when extract(month from C_DATE) = 11 then 1 end) as nov,
   count(case when extract(month from C_DATE) = 12 then 1 end) as december
from Table1

目前这是我产生结果的查询

Jan Feb Mar Apr .....
1   3    1   2

现在我想在折线图中显示这些信息,所以看起来像这样合并

3       x
2
1  x           x
  jan   feb   mar 

当我尝试使用我当前的查询时,我无法让它工作。非常感谢任何帮助

【问题讨论】:

  • 您使用的是哪个版本的 Oracle?预计的最大计数是多少?
  • 我正在使用 oracle apex 4.1,预计最大计数为 100

标签: sql charts oracle-apex linegraph


【解决方案1】:

如果你真的想使用 ASCII 图形,而不是更复杂的东西,你可以在

WITH
Line AS (
  SELECT
    ' ' || Jan || '  ' || Feb || '  ' || Mar || '  ' || Apr || '  ' || May || '  ' || Jun || '  ' || Jul || '  ' || Aug || '  ' || Sep || '  ' || Oct || '  ' || Nov || '  ' || Dec || ' ' l
  FROM Result
),
Graph (cnt, g)AS (
  SELECT 5, '#' || REGEXP_REPLACE(REGEXP_REPLACE(l, ' 5 ', '  x  '), '\d+', '   ') || '#' FROM Line UNION ALL
  SELECT 4, '#' || REGEXP_REPLACE(REGEXP_REPLACE(l, ' 4 ', '  x  '), '\d+', '   ') || '#' FROM Line UNION ALL
  SELECT 3, '#' || REGEXP_REPLACE(REGEXP_REPLACE(l, ' 3 ', '  x  '), '\d+', '   ') || '#' FROM Line UNION ALL
  SELECT 2, '#' || REGEXP_REPLACE(REGEXP_REPLACE(l, ' 2 ', '  x  '), '\d+', '   ') || '#' FROM Line UNION ALL
  SELECT 1, '#' || REGEXP_REPLACE(REGEXP_REPLACE(l, ' 1 ', '  x  '), '\d+', '   ') || '#' FROM Line UNION ALL
  SELECT 0, '#' || REGEXP_REPLACE(REGEXP_REPLACE(l, ' 0 ', '  x  '), '\d+', '   ') || '#' FROM Line UNION ALL
  SELECT -1, '# Jan  Feb  Mar  Apr  May  Jun  Jul  Aug  Sep  Oct  Nov  Dec #' FROM DUAL
)
SELECT
  *
FROM Graph
ORDER BY cnt DESC
;

“结果”是您对 Table1 的查询。

请参阅SQL Fiddle(切换到纯文本输出以查看正确对齐的列。)
你试过Building Charts, Gantts and Maps with Oracle Application Express 4.0 吗? 如果需要调整/进一步详细信息,请发表评论。

【讨论】: