Выберите объединение отдельных записей из двух таблиц на основе общего столбца - PullRequest
0 голосов
/ 07 мая 2020

Я хочу объединить Table1 и Table2 и выбрать отдельные записи. Если Transaction_id совпадает в обеих таблицах, мне нужна запись из Table1 (а не из Table2 вообще). Может ли кто-нибудь написать мне запрос сервера SQL? Я пытаюсь выполнить запрос ниже, но получаю повторяющиеся записи.

Select * from Table1
union
Select * from Table2

Table1

Transaction_id  Product Quantity    Return
     1           Pen       2       No DATA
     2           pencil    4       No DATA
     3           sharpner  6       No DATA
     4           eraser    10      No DATA

Table2

Transaction_id  Product Quantity    Return
     3           sharpner   6       Yes
     5           Book       9       Yes

Объединенный стол

Transaction_id  Product Quantity    Return
     1           Pen       2       No DATA
     2           pencil    4       No DATA
     3           sharpner  6       No DATA
     4           eraser    10      No DATA
     5           Book      9       Yes

Ответы [ 2 ]

0 голосов
/ 07 мая 2020

Я бы использовал full join и условный лог c здесь:

select
    coalesce(t1.transaction_id, t2.transaction_id)transaction_id,
    case when t1.transaction_id is not null then t1.product else t2.product end product,
    case when t1.transaction_id is not null then t1.quantity else t2.quantity end quantity,
    case when t1.transaction_id is not null then t1.return else t2.return end return
from table1 t1
full join table2 t2 on t1.transaction_id = t2.transaction_id

Обратите внимание, что return - ключевое слово языка, поэтому не лучший выбор для имени столбца.

0 голосов
/ 07 мая 2020

Попробуйте следующее, и вот демонстрация .

select
  transaction_id,
  product,
  quantity,
  retur
from table1

union all

select
  transaction_id,
  product,
  quantity,
  retur
from table2 t2
where not exists (
  select
    transaction_id
  from table1 t1
  where t2.transaction_id = t1.transaction_id
)

Вывод:

*------------------------------------------*
|transaction_id  product quantity   retur  |
*------------------------------------------*
|  1               Pen        2     No DATA|
|  2               pencil     4     No DATA|
|  3               sharpner   6     No DATA|
|  4               eraser     10    No DATA|
|  5               book       9      yes   |
*------------------------------------------*
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...