Диаграмма вершины оракула - линейный график sql?

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 

Будучи немного нубом с диаграммами, я не могу заставить его работать, когда пытаюсь использовать свой текущий запрос. любая помощь очень ценится


person Yoyo1233242    schedule 10.01.2015    source источник
comment
Какую версию Oracle вы используете? Какое максимальное количество можно ожидать?   -  person Abecee    schedule 11.01.2015
comment
Я использую oracle apex 4.1, максимальное количество ожидаемых значений равно 100.   -  person Yoyo1233242    schedule 11.01.2015


Ответы (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
;

с «Результатом» в качестве вашего запроса к таблице 1.

См. SQL Fiddle (переключитесь на вывод обычного текста, чтобы правильно выровнять столбцы).
Дали ли вы диаграммы построения, диаграммы Ганта и Карты с Oracle Application Express 4.0 попробовать? Пожалуйста, прокомментируйте, если и как требуется корректировка/дополнительная информация.

person Abecee    schedule 11.01.2015