РЕЗУЛЬТАТЫ MERGE NULL В POSTGRESQL - PullRequest
0 голосов
/ 20 февраля 2020
WITH RECURSIVE utree AS (
SELECT u.id, u.parent_id, u.level, u.unit_short, e.name from units as u RIGHT JOIN employees as e on u.unit_short = e.buc_urc WHERE e.id = 15
UNION
SELECT u.id, u.parent_id, u.level, u.unit_short, utree.name from units as u inner join utree on u.id = utree.parent_id
) SELECT CASE WHEN level = 2 THEN unit_short END AS department_unit , CASE WHEN level = 1 THEN unit_short END AS group_unit, name FROM utree;

с запросом выше, результат:

 department_unit | group_unit |        name         
-----------------+------------+---------------------
                 | GI104      | NYOMAN PUTRA ANTARA
 GI1             |            | NYOMAN PUTRA ANTARA
                 |            | NYOMAN PUTRA ANTARA

результат, который я хочу, равен

 department_unit | group_unit |        name         
-----------------+------------+---------------------
  GI1            | GI104      | NYOMAN PUTRA ANTARA

1 Ответ

0 голосов
/ 21 февраля 2020

Поскольку вы не смогли опубликовать свой полный запрос, DDL или пример данных, на это ничего нельзя посмотреть. Пожалуйста, просмотрите Как спросить . Следование этому шаблону значительно увеличивает ваши шансы получить удовлетворительный ответ. В этом случае, используя опубликованные вами результаты, вы можете получить желаемые результаты, соединив столбцы результатов со значениями NULL, в которых только один (?) Не равен нулю. Итак, используя результаты, которые вы опубликовали:

with results ( department_unit, group_unit, name) as    
     (values (null  ,'GI104','NYOMAN PUTRA ANTARA')
           , ('GI1' ,null   ,'NYOMAN PUTRA ANTARA')
           , (null  ,null   ,'NYOMAN PUTRA ANTARA')
     )
select distinct r1.department_unit, r2.group_unit, r3.name 
  from results r3
  join results r1 on (r3.name = r1.name and r1.department_unit is not null)
  join results r2 on (r2.name = r3.name and r2.group_unit is not null)
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...