Желаемый вывод с данными таблицы - PullRequest
3 голосов
/ 23 февраля 2012

Привет! У меня есть тест таблицы, ее структура приведена ниже:

**Testing**

  PK    C1    c2  
 ---------------
 1      v11  v12
 2      v21  v23
 3      v31  v32

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

 Pk  Key value 
---------------
 1    c1    v11
 1    c1    v12
 2    c2    v21
 2    c2    v22
 3    c3    v31
 3    c3    v32

Возможно ли это с помощью SQL-запроса в Oracle 11g? Возможно ли это с помощью функции PIVOT в 11g?

1 Ответ

2 голосов
/ 24 февраля 2012

Нет, это не может быть сделано с PIVOT, но это может быть сделано с <b>UN</b>PIVOT:

SELECT
  Pk,
  "Key",
  value
FROM Testing
UNPIVOT (
  value FOR "Key" IN (C1, C2)
)

А когда UNPIVOT недоступен, я часто отключаюсь так:

SELECT
  t.Pk,
  x."Key",
  CASE x."Key"
    WHEN 'C1' THEN t.C1
    WHEN 'C2' THEN t.C2
  END AS value
FROM Testing t
CROSS JOIN (
  SELECT 'C1' AS "Key" FROM DUAL UNION ALL
  SELECT 'C2' FROM DUAL
) x
...