Выбор данных из таблицы путем группировки одного столбца в Oracle - PullRequest
0 голосов
/ 10 января 2020

У меня есть таблица T1 , как показано ниже

ID PASSED   FAILED  PASSED_PERCENTAGE   FAILED_PERCENTAGE
-- ------   ------  -----------------   -----------------
1  380      172     50                  23 

Мне нужен запрос SQL, который дает мне вывод, как показано ниже

DESC           ID        TOTAL         PERCENTAGE
----           --        -----         ----------
PASSED         1         380           50
FAILED         1         172           23

Примечание: Таблица T1 всегда будет иметь только одну строку, а столбец ID всегда будет иметь постоянное значение как '1' Может кто-нибудь помочь, пожалуйста мне с этим. Большое спасибо заранее.

Ответы [ 2 ]

2 голосов
/ 10 января 2020

использование union all

select 'Passed' as 'desc', id, PASSED as total,PASSED_PERCENTAGE as PERCENTAGE
from tablename
union all
select 'Falied', id, Failed,FAILED_PERCENTAGE
from tablename
0 голосов
/ 10 января 2020

Oracle 12 C поддерживает боковые объединения, что является улучшением по сравнению с подзапросами (таблица сканируется только один раз):

select x.*
from t cross join lateral
     (select 'Passed' as which, id, passed as total, passed_percentage as percentage
      from dual
      union all
      select 'Failed' as which, id, failed as total, failed_percentage as percentage
      from dual
     ) x;

Конечно, для этого образца данных образец сканирования не является проблема производительности - если таблица не является действительно сложным представлением.

Однако, боковые объединения очень мощные и о них стоит узнать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...