試圖爲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