Oracle, как сделать внешнее соединение в строке выбора - PullRequest
0 голосов
/ 17 сентября 2018

у меня есть три выбораони выбираются cod_usuario.Это не может быть строки в первом, втором или третьем выборе.

Как я могу выполнить внешнее объединение этих выборов?

1 Ответ

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

Сделайте, чтобы каждый из вас выбирал общее табличное выражение, затем полностью внешнее объедините их вместе:

WITH cte1 AS (SELECT mam.fecha AS fecha,
                     u.COD_USUARIO AS usuario,
                     u.NOMBREAPELLIDOS AS nombre,
                     ROW_NUMBER() OVER (PARTITION BY u.cod_usuario
                                        ORDER BY mam.fecha ASC) AS rn_asc,
                     ROW_NUMBER() OVER (PARTITION BY u.cod_usuario
                                        ORDER BY mam.fecha DESC) AS rn_desc,
                     mam.accion AS accion,
                     u.ID_CENTRO_GESTION AS centrogestion 
                FROM r_mod_asignar_material mam
                INNER JOIN r_usuarios u
                  ON mam.cod_usuario = u.cod_usuario
                where mam.ACCION = 'A' and
                      trunc(mam.fecha) = to_date('13/09/2018','dd/mm/yyyy') AND
                      mam.cod_usuario = '9717703' AND
                      u.id_centro_gestion = '3'
                order by u.cod_usuario),
     cte2 AS (SELECT mam.fecha AS fecha,
                     u.COD_USUARIO AS usuario,
                     u.NOMBREAPELLIDOS AS nombre,
                     ROW_NUMBER() OVER (PARTITION BY u.cod_usuario
                                        ORDER BY mam.fecha ASC) AS rn_asc,
                     ROW_NUMBER() OVER (PARTITION BY u.cod_usuario
                                        ORDER BY mam.fecha DESC) AS rn_desc,
                     mam.accion AS accion
                     u.ID_CENTRO_GESTION AS centrogestion 
                FROM r_mod_asignar_material mam
                INNER JOIN r_usuarios u
                  ON mam.cod_usuario = u.cod_usuario
                where mam.ACCION = 'D' and
                      trunc(mam.fecha) = to_date('13/09/2018','dd/mm/yyyy') AND
                      mam.cod_usuario = '9717703' AND
                      u.id_centro_gestion = '3'
                order by u.cod_usuario),
     cte3 AS (SELECT COUNT (*) numeroincidencias,
                     ri.cod_usuario usuario
                FROM r_incidencias ri
                WHERE TRUNC (ri.fecha_inc) = TO_DATE ('13/09/2018', 'dd/mm/yyyy') AND
                      ri.cod_usuario = '9717703'
                GROUP BY ri.cod_usuario)
SELECT *
  FROM cte1
  FULL OUTER JOIN cte2
    ON cte2.cod_usuario = cte1.cod_usuario
  FULL OUTER JOIN cte3
    ON cte3.cod_usuario = COALESCE(cte1.cod_usuario, cte2.cod_usuario)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...