Sql server SQL使用相同的外键连接三个表,而不是组合表2和表3数据

Sql server SQL使用相同的外键连接三个表,而不是组合表2和表3数据,sql-server,left-join,outer-join,Sql Server,Left Join,Outer Join,我试图实现的是连接三个表,它们具有相同的外键。但是我想展示表2和表3中的细节,而不是将它们合并成一行。下面您可以看到正在返回的数据的屏幕截图。InvoiceAmount正在多次打印相同的金额。“Name”来自第一个表,也是其他两个表中的外键(CC1)。“InvoiceAmount”和“Description”来自第二个表,“NetAmount”来自第三个表 如果“InvoiceAmount”和“Description”具有值,则“NetAmount”将为空 如果“NetAmount”具有值,则“

我试图实现的是连接三个表,它们具有相同的外键。但是我想展示表2和表3中的细节,而不是将它们合并成一行。下面您可以看到正在返回的数据的屏幕截图。InvoiceAmount正在多次打印相同的金额。“Name”来自第一个表,也是其他两个表中的外键(CC1)。“InvoiceAmount”和“Description”来自第二个表,“NetAmount”来自第三个表

如果“InvoiceAmount”和“Description”具有值,则“NetAmount”将为空

如果“NetAmount”具有值,则“InvoiceAmount”和“Description”将为空

下面是我希望在select中打印数据的方式(如果可能)。我不知道是否必须创建一个视图,或者是否可以通过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,它正按照我告诉它的方式进行操作,但我就是搞不懂,也找不到任何地方可以像上面所示那样打印数据。非常感谢您的帮助

从作业中选择j.名称、a.发票金额、a.说明、p.NetAmount作为j
左外连接
APInvoiceBatchDetail作为
关于a.CC1=j.Name
左外连接
p报告为p
在p.CC1=j.Name上

下面是第一个表“作业”的屏幕截图

下面是第二个表“APInvoiceBatchDetail”的屏幕截图

下面是第三个表“PPERecord”的屏幕截图

如果您需要订单,您可以这样做:

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

哇,太谢谢你了!我不知道你可以使用“null as”来满足工会的要求。请仅将图像用于不能表示为文本或扩充文本的内容。无法搜索或剪切粘贴图像。代码问题需要解决。通过编辑而不是评论来澄清。
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