2013-04-12 40 views
-1

這裏是我的表:LEFT JOIN 2個表使用金額及GROUP BY

Table: Catalog     Table: Inventory 
--------------     ---------------- 
catalogId  - int [PK]  inventoryId  - int [PK] 
itemName  - nvarchar  inventoryTimeStamp - datetime 
itemType  - bit    quantity   - float 
catalogNumber - int    catId    - int [FK] 

我的問題是: 如何連接表(左加入他們的行列)&總結項目的數量在庫存表,所以我可以打印:itemName,目錄號&總和。

我嘗試這樣做:

SELECT Catalog.itemName, Inventory.catId, SUM(Inventory.quantity) AS Sum 
FROM Catalog 
LEFT JOIN Inventory ON Inventory.catId = Catalog.catalogId 
GROUP BY Inventory.catId 

但我得到一個異常:

列「Catalog.itemName」在選擇列表中無效,因爲它是 不包含在聚合函數或GROUP BY子句。

我該怎麼辦?

+2

將'Catalog.itemName'放入'group by'子句中,就像錯誤消息所示。 – Rohrbs

+0

Finnaly !!!它工作了,非常感謝你的朋友! – Erez

+0

太棒了!現在,請接受下面的答案之一作爲解決您的問題。 :) – Rohrbs

回答

0

你只需要所有的非聚集列添加到GROUP BY條款的末尾添加GROUP BY

SELECT Catalog.itemName, 
     Inventory.catId, 
     SUM(Inventory.quantity) AS Sum 
FROM Catalog 
     LEFT JOIN Inventory 
      ON Inventory.catId = Catalog.catalogId 
GROUP BY Catalog.itemName, Inventory.catId 
+0

@mellamokb我忘了刪除'enumrate'。 –

0

只需添加

GROUP BY Catalog.itemName, Inventory.catId, Inventory.quantity

,它會工作。

當你有sumcount等,需要在查詢

0

您需要從SELECT中刪除Catalog.itemName或將其包含在Group By條款中。