2014-01-10 101 views
-2

我有sql表,如下圖所示。SQL使用sum命令和「in」子句

enter image description here

我的查詢是:

 Select * from tblOrderDetails where OrderID in 
      (Select OrderID from tblOrders where CustomerID = 523456) 

從tblOrderDetails像

enter image description here

查詢帶來了選擇的客戶的所有銷售細節expceted它返回的值。但是我想在具有相同ProductID的行上使用SUM。預計輸出應該是這樣的:

enter image description here

行有相同的productID,數量和價格得到總結,也行合併。但它必須在選定的CustomerID內完成。

我已經嘗試了許多不同的方式SUM命令,但不能得到它的工作。請建議。謝謝。

+1

請不要用圖像來演示這裏的東西,除非它們是絕對必要的。他們很難閱讀,許多代理服務器阻止他們(例如我的 - 我看到「tblOrderDetails like」和一大塊白色屏幕,「應該看起來像這樣」和一塊白色屏幕),以及內容是不可能複製/粘貼的。它也無法搜索,對帶寬有限的用戶不好。將文本表示置於您的問題中,並正確格式化,以便輕鬆看到。謝謝。 –

+0

絕對不要做'SELECT *'的好主意,只需選擇需要返回的列。沒有看到你的'SUM'嘗試,我猜這至少部分是你造成的問題。 – LittleBobbyTables

+1

您需要閱讀SQL的基本介紹。你還沒有準備好提問的時候。 – Dmitri

回答

4

這聽起來像你不瞭解GROUP BY子句。

也許這就是你想要做的?

Select CustomerID,ProductId,SUM(Quantity) Quantity,SUM(TotalPrice) TotalPrice from tblOrderDetails where OrderID in (Select OrderID from tblOrders where CustomerID = 523456) 
GROUP BY CustomerID,ProductId 

這組由所有同一客戶再由同樣的產品,只允許這些合併的子集的款項

+4

你也可以用一個簡單的'INNER JOIN'替換不必要的'IN'子句。 – LittleBobbyTables

+0

@LittleBobbyTables非常正確,這實際上會更乾淨。我剛剛複製OP的查詢 – EkriirkE

+0

感謝您的建議,它的工作。但我不得不從查詢中刪除CustomerID以使其工作。 –

1

你會想用SUM和GROUP BY實現你正在尋找的結果。

SELECT ProductID, SUM(Quantity) AS Quantity, SUM(TotalPrice) AS TotalPrice 
FROM tblOrderDetails 
WHERE OrderID IN 
(
    SELECT OrderID 
    FROM tblOrders 
    WHERE CustomerID = 523456 
) 
GROUP BY ProductID 
+0

感謝您提供乾淨整潔的解釋。 –