SQL Server 2012将两个表中的列合并到一个表中

SQL Server 2012将两个表中的列合并到一个表中,sql,tsql,sql-server-2012,Sql,Tsql,Sql Server 2012,我在不同的地方有两张桌子 最终结果必须是 VendorName InvoiceNumber InvoiceTotal VendorName位于名为Vendors InvoiceNumber和InvoiceTotal位于名为Invoices 它需要在结果中显示所有供应商,即使供应商没有任何发票,也要先显示最大的发票总额,然后按字母顺序对供应商名称进行排序 我试图把发票加入我的账户 SELECT VendorName FROM Vendors 但我无法理解语法:/使用左连接来包括那些没有发

我在不同的地方有两张桌子

最终结果必须是

VendorName  InvoiceNumber  InvoiceTotal
VendorName
位于名为
Vendors

InvoiceNumber
InvoiceTotal
位于名为
Invoices

它需要在结果中显示所有供应商,即使供应商没有任何发票,也要先显示最大的发票总额,然后按字母顺序对供应商名称进行排序

我试图把发票加入我的账户

SELECT VendorName FROM Vendors 

但我无法理解语法:/

使用
左连接来包括那些没有发票的供应商,如:

SELECT 
  v.VendorName, i.InvoiceNumber, i.InvoiceTotal
FROM Vendors v
LEFT JOIN Invoices i ON v.Id = i.VendorID
ORDER BY i.InvoiceTotal DESC, v.VendorName ASC

你是说:

select VendorName
      ,Count(InvoiceAmount) As InvoiceNumber
      ,Sum(InvoiceAmount) As InvoiceTotal
  from Vendor
  left join Invoices on Vendor.VendorId = Invoices.VendorId
 group by VendorName
 order by 3 Desc

您需要使用
左联接
来联接与两个表相关的列上的两个表。使用
左联接
将返回所有
供应商
,即使他们在
发票
表中没有条目:

select v.vendorname,
    i.invoicenumber,
    i.invoicetotal
from vendors v
left join invoices i
    on v.vendorid = i.vendorid  -- this is the column relating the two tables
order by i.invoicetotal DESC, v.vendorname ASC
如果您需要学习
JOIN
语法的帮助,这里有一个很棒的您需要的帮助。假设PK/FK是
VendorID

SELECT v.VendorName, i.InvoiceNumber, i.InvoiceTotal
FROM Vendors v
LEFT OUTER JOIN Invoices i ON v.VendorID = i.VendorID
ORDER BY v.VendorName   ASC
      ,  i.InvoiceTotal DESC
尝试:


您希望将供应商分组在一起,还是供应商可以在结果集中出现一次以上?例如,您可以使用SUM(Invoices.InvoiceTotal)来获取InvoiceTotals的总数。

请发布您的模式。两个表位于不同位置是什么意思?不同的数据库?不同的服务器?例如,您可以在上找到一些好的基本SQL教程。看看它们,它们将帮助您理解SQL语法!OP希望首先显示最大的发票总额-因此您应该按
InvoiceTotal
(而不是
InvoiceNumber
)排序。我相信为什么按
分组?我看不出OP只要求最大的
InvoiceTotal
值-他希望输出按该列排序-但不分组-否?为什么要按
分组?我看不出OP只要求最大的
InvoiceTotal
值-他希望输出按该列排序-但不分组-否?只是假设,因为他从未告诉我们该表有发票总额的聚合字段。。。在没有分组的情况下,他可以选择另外4个答案。
SELECT Vendors.VendorName, Invoices.InvoiceNumber, Invoices.InvoiceTotal 
FROM Vendors LEFT JOIN Vendors.VendorID on Invoices.VendorId 
ORDER BY Invoices.InvoiceTotal DESC