Oracle: мне нужно "частичное" внешнее соединение.Посмотрите на изображение - PullRequest
0 голосов
/ 24 февраля 2012

Надеюсь, это понятно.Как я могу достичь результата, показанного на следующем изображении?

enter image description here

Ответы [ 2 ]

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

Просто выполните внешнее соединение, но также используйте объединение

SELECT
   COALESCE(a.master,b.master) master,
   a.ColA,
   b.ColB
FROM
  a FULL OUTER JOIN B
  ON a.master = b.master
     AND (a.ColA = b.ColB 
          or a.ColA is Null
          or b.ColB is Null)
ORDER BY 
    COALESCE(a.master,b.master),
    COALESCE(a.cola,b.colB)

Посмотрите, как это работает здесь

1 голос
/ 24 февраля 2012
SELECT 
  masters.master AS master,
  TableA.ColA AS ColA,
  TableB.ColB AS ColB,
FROM
    (
      SELECT master FROM TableA
      UNION
      SELECT master FROM TableB
    ) AS masters
    LEFT JOIN TableA ON masters.master=TableA.master
    LEFT JOIN TableB ON masters.master=TableB.master
ORDER BY
    master, ColA, ColB
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...