Параметры Oracle Pivot - PullRequest
       8

Параметры Oracle Pivot

0 голосов
/ 10 сентября 2018

У меня ниже Pivot и выход. Я хотел бы отобразить ниже.

  1. Удалить скобки вокруг столбцов?
  2. Добавить индикатор X и Null вместо 1 и 0?

SQL:

SELECT DISTINCT
*
   FROM (
          SELECT D.ID, D.DI, A.ID
          FROM  A
          LEFT JOIN  AD                  ON A.ID = AD.ID
          LEFT JOIN  D                        ON AD.ID = D.ID
          WHERE 1=1
          AND A.ID = 890929
                                           )
          PIVOT
            (
           COUNT(ID) 
            FOR DI IN  ( 'Low med','Soft','Regular','High Med','Other')
              )

Вывод запроса:

ID  'Low med' 'Soft' 'Regular'  'High Med'  'Other'
1      1         1      0           0          1

Ожидаемый результат:

ID  LOW_MED    SOFT REGULAR        HIGH_MED       OTHER
1      X         X      NULL           NULL          X

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете удалить одинарные кавычки (не круглые скобки, которые ()), используя псевдонимы поворотных выражений:

FOR DI IN ('Low med' as low_med, 'Soft' as soft, 'Regular' as regular,
  'High Med' as high_med,'Other' as other)

Затем вы можете использовать эти псевдонимы для второй части, но добавив выражения caseна ваш основной запрос:

SELECT id,
  case when low_med = 1 then 'X' else null end as low_med,
  case when soft = 1 then 'X' else null end as soft,
  case when regular = 1 then 'X' else null end as regular,
  case when high_med = 1 then 'X' else null end as high_med,
  case when other = 1 then 'X' else null end as other
FROM (
  SELECT D.ID, D.DI, A.ID
  FROM  A
  LEFT JOIN  AD ON A.ID = AD.ID
  LEFT JOIN  D ON AD.ID = D.ID
  WHERE 1=1
  AND A.ID = 890929
)
PIVOT
(
  COUNT(ID) 
  FOR DI IN ('Low med' as low_med, 'Soft' as soft, 'Regular' as regular,
    'High Med' as high_med,'Other' as other)
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...