Преобразование результирующего набора столбца в эти имена столбцов в Oracle - PullRequest
0 голосов
/ 29 января 2019

Как разделить результирующий набор столбца на несколько столбцов

Предположим, у меня есть столбец Quarter and Tenure со значениями, как показано ниже для таблицы. Пример

Quarter|Tenure
Q1     |3
Q2     |3
Q3     |2
Q4     |1

Итак, срок владения - это числомесяцев, обслуживаемых сотрудником ежеквартально.

Теперь я ожидаю, что набор результатов будет состоять из четырех разных сроков выборки, ежеквартально выбираемых в четырех разных столбцах.Это означает, что в этом квартале должно быть указано, сколько стоит землевладение, но в 4 разных столбцах.

например,

Q1_A| Q2_A |Q3_A |Q4_A
3   | 3    |2    |1

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Использование PIVOT:

Установка Oracle :

CREATE TABLE table_name ( Quarter, Tenure ) AS
  SELECT 'Q1', 3 FROM DUAL UNION ALL
  SELECT 'Q2', 3 FROM DUAL UNION ALL
  SELECT 'Q3', 2 FROM DUAL UNION ALL
  SELECT 'Q4', 1 FROM DUAL;

Запрос :

SELECT *
FROM   table_name
PIVOT  ( MAX( Tenure ) FOR Quarter IN (
    'Q1' AS Q1_A,
    'Q2' AS Q2_A,
    'Q3' AS Q3_A,
    'Q4' AS Q4_A
) )

Выход :

Q1_A | Q2_A | Q3_A | Q4_A
---: | ---: | ---: | ---:
   3 |    3 |    2 |    1

дБ <> скрипка здесь

0 голосов
/ 29 января 2019

Вы можете использовать DECODE:

SELECT SUM(DECODE(quarter,'Q1',tenure,0)) Q1_A,
SUM(DECODE(quarter,'Q2',tenure,0)) Q2_A,
SUM(DECODE(quarter,'Q3',tenure,0)) Q3_A,
SUM(DECODE(quarter,'Q4',tenure,0)) Q4_A
FROM Sample;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...