Как использовать значения столбцов SQL в качестве имен столбцов в Oracle 11 - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть таблица, похожая на:

    Date     |  Communication_Type
   ----------  --------------------
   12/10/2011  EMAIL
   12/10/2011  WEB
   12/10/2011  WEB
   11/10/2011  MAIL
   11/10/2011  FAX
   11/10/2011  FAX
   11/10/2011  EMAIL

Я хочу написать запрос для отображения двух верхних типов связи на определенную дату, но типы связи не ограничиваются показанными здесь,они могут быть одним из 100.

Есть ли способ, которым я мог бы получить вывод, как это, то есть для 11/11 / 2011

<_top_communication_type_count> | <second_top_communication_type_count>
-------------------------------- --------------------------------------
2                                1    

, где _top_communication_type_count будет FAX_COUNTв данном случае, но для 12/11/2011 будет WEB_COUNT

Это немного сложно объяснить, но, надеюсь, вы понимаете, о чем я!Я нашел примеры для MySQL, но не для Oracle.

1 Ответ

0 голосов
/ 08 ноября 2011

Невозможно использовать список неизвестных значений в качестве имен столбцов в Oracle (10g имеет pivot, но для этого требуется известный список значений). Теоретически вы могли бы сделать это, сначала запросив уникальные значения, а затем построив динамический запрос, но для минимально полезных результатов было бы много работы.

Ниже приведено решение, которое возвращает данные в обычном формате на основе строк (на основе ответа @Michael Durrant, модифицированного для работы в Oracle):

select *
from   (
   select communication_type
   from   communications c
   where  date = 'the_date'
   order  by count(c.communication_type)
   group  by c.communication_type)
where rownum <= 2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...