Поверните столбцы в строки - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть запрос, который выбирает 5 столбцов (d, p, name, val1, val2):

SELECT
  table.bd AS d,
  g.p AS p,
  g.name || '_' || g.class || '_' || g.gname AS name,
  (CASE
    WHEN
      table.type = 'D'
    THEN
      table.b
    ELSE
      0
  END) AS VAL1,
  (CASE
    WHEN
      table.type = 'S'
    THEN
      table.b
    ELSE
      0
  END) AS VAL2

Мне нужно, чтобы мои строки были разбиты на 2 отдельные строки.Обе строки будут иметь первые 3 столбца, но одна будет содержать только столбец val1, а другая будет содержать столбец val2.

Например, если мой запрос возвращает строку:

  d    p    name    val1    val2
'val' 25   'john'   450     90

Мне нужно:

  d    p    name    val1
'val' 25   'john'   450

  d    p    name    val2
'val' 25   'john'   90

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 21 ноября 2018

Операторы набора (UNION / UNION ALL) должны сделать свое дело.Не может видеть структуру данных полностью, но ниже должно работать:

SELECT d, p, name, val1 FROM table UNION ALL select d, p , name, val2 FROM table;

Используйте UNION вместо UNION ALL, если вам не нужны дублированные результаты в случае val1 = val2.

SELECT d, p, name, val1 FROM table UNION select d, p , name, val2 FROM table;

Однако, поскольку это будет один столбец для val1 и val2, он будет иметь имя val1, как это происходит из первого оператора select, поэтому результат будет таким:

  d    p    name    val1
'val' 25   'john'   450
'val' 25   'john'   90
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...