SQL Соединение трех таблиц с одинаковым внешним ключом без объединения данных таблиц 2 и 3 - PullRequest
0 голосов
/ 15 марта 2019

Я пытаюсь соединить три таблицы с одним и тем же внешним ключом.Но я хотел бы показать детали из таблицы 2 и таблицы 3, не объединяя их в одну строку.Ниже вы можете увидеть снимок экрана с данными, которые возвращаются.InvoiceAmount печатает одну и ту же сумму несколько раз.«Имя» происходит из первой таблицы, которая также является внешним ключом (CC1) в двух других таблицах.«InvoiceAmount» и «Description» относятся ко второй таблице, а «NetAmount» - из третьей таблицы.

Если «InvoiceAmount» и «Description» имеют значение, то «NetAmount» будет нулевым

Если «NetAmount» имеет значение, тогда «InvoiceAmount» и «Description» будут нулевым

enter image description here

Ниже показано, как я хотел бы, чтобы данные печатались в выборке, если это возможно.Я не знаю, нужно ли мне создавать представление или возможно ли это сделать с помощью запроса Select, или, если вообще возможно, это возможно.

Name         InvoiceAmount       Description            NetAmount 
19-SHOP        -10041.98         BULKITEMTRANSFER        NULL  
19-SHOP         NULL               NULL                   84.840625
19-SHOP         NULL               NULL                   109.8613
19-SHOP         NULL               NULL                   110.1601
19-SHOP         NULL               NULL                   154.5323
19-SHOP         NULL               NULL                   187.5742

Ниже приведен SQL, который ясейчас, и он делает именно то, что я говорю, но я просто не могу понять, или найти где-нибудь, как распечатать данные, как я показал выше.Любая помощь очень ценится!

SELECT j.Name, a.InvoiceAmount, a.Description, p.NetAmount FROM Job AS j LEFT OUTER JOIN APInvoiceBatchDetail AS a ON a.CC1 = j.Name LEFT OUTER JOIN PPEReport AS p ON p.CC1 = j.Name

Ниже приведен снимок экрана для первой таблицы «Работа»

enter image description here

Ниже приведен снимок экрана для второй таблицы «APInvoiceBatchDetail»

enter image description here

Ниже приведен снимок экрана для третьей таблицы «PPERecord»

enter image description here

1 Ответ

1 голос
/ 15 марта 2019
SELECT j.Name,  a.InvoiceAmount, a.Description, null as NetAmount 
FROM Job AS j
JOIN APInvoiceBatchDetail AS a ON a.CC1 = j.Name 

union all

SELECT j.Name,  null as InvoiceAmount, null as Description, p.NetAmount 
FROM Job AS j
JOIN PPEReport AS p ON p.CC1 = j.Name

если вам нужен заказ, вы можете сделать это так:

SELECT Name, InvoiceAmount, Description, NetAmount
FROM (
  SELECT j.Name,  a.InvoiceAmount, a.Description, null as NetAmount,
         1 as ord 
  FROM Job AS j
  JOIN APInvoiceBatchDetail AS a ON a.CC1 = j.Name 

  union all

  SELECT j.Name,  null as InvoiceAmount, null as Description, p.NetAmount,
         2 as ord 
  FROM Job AS j
  JOIN PPEReport AS p ON p.CC1 = j.Name
) X
ORDER BY X.ORD, X.Name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...