试图为MSSQL练习创建4路查询。让我简单描述表格:涉及四路加入的SQL查询
4个主表,供应商(供应商详细信息,pk vendorId),发票(发票详细信息pk InvoiceId,fk VendorID),InvoiceLineItems(I)和GlAccounts(accountNo pk)。
查询:编写一条SELECT语句,返回四列:VendorName,AccountDescription,LineItemCount和LineItemSum。 LineItemCount是行数,并LineItemSum是InvoiceLineItemAmount列
我的解决方案的总和:
SELECT Vendors.VendorName, GLAccounts.AccountDescription,
SUM(InvoiceLineItems.InvoiceLineItemAmount) as LineItemSum,
Count (InvoiceLineItems.InvoiceID) as LineItemCount
FROM Vendors INNER JOIN Invoices
ON Vendors.VendorID = Invoices.VendorID
INNER JOIN InvoiceLineItems
ON Invoices.InvoiceID = InvoiceLineItems.InvoiceID
INNER JOIN GLAccounts
ON InvoiceLineItems.AccountNo = GLAccounts.AccountNo
ORDER BY Vendors.VendorName
问题:
消息8120,级别16,状态1,行 列'Vendors.VendorName'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。
的窘境:
不知道为什么这个问题发生,因为很清楚我在集团提Vendors.VendorName By子句。我怀疑它与我正在执行的内部连接有关,因为它们是多个,我必须有错误。
任何人都可以发现这里有什么问题吗?
如果你有多个总帐科目的发票多个行项目,什么应返回:用逗号分隔的列表? – Thomas 2011-05-30 23:41:07
你明确提到它在哪个* GROUP BY条款中? – Phil 2011-05-30 23:42:53