2014-09-03 53 views
1
Select 
    P.ProductName, WFS.Status, OI.Quantity, OI.Price 
from 
    OrderItem As OI 
Inner Join 
    Order As O On OI.OrderID = O.ID AND OI.ItemType = 1 
Inner Join 
    Product P On OI.ProductID = P.ID 
Inner Join 
    WorfFlowStatus As WFS On O.StatusID = WFS.ID 

這個查詢添加重複的值返回行:表中的SQL服務器

ProductName Status Quantity  Price 
------------------------------------------- 
ABC   Shipped  10   100 
ABC   Shipped  10   100 
BCE   Pending  20  200 

現在我想在一行中選擇相同的產品,但應增加數量和價格。對於e.g

ABC  Shipped   20  200  
BCE  Pending   20  200 

如果狀態和產品名稱是不是增加數量和價格相同,如果產品不一樣,那麼不添加的數量和價格。

+1

你需要將你的數據。閱讀關於'GROUP BY'條款 – cha 2014-09-03 23:22:45

+0

喜其實我也分組完整的查詢是這樣的。選擇P.ProductName,WFS.Status,OI.Quantity,OI.Price從OrderItem的作爲OI內加入訂單號O在OI.OrderID = O.ID AND OI.ItemType = 1內部聯接產品P的OI.ProductID = P.ID內部聯接WorfFlowStatus作爲WFS在O.StatusID = WFS.ID組由P.ProductName,WFS.Status,OI.Quantity,OI 。價格 – Muhabutti 2014-09-03 23:24:08

+1

根據您的SQL語句你不是 – cha 2014-09-03 23:24:52

回答

0
Select 
    P.ProductName, 
    WFS.Status, 
    sum(OI.Quantity), 
    sum(OI.Price) 
from OrderItem As OI 
    Inner Join Order As O 
    On OI.OrderID = O.ID AND OI.ItemType = 1 
    Inner Join Product P 
    On OI.ProductID = P.ID 
    Inner Join WorfFlowStatus As WFS 
    On O.StatusID = WFS.ID 
group by 
    P.ProductName, 
    WFS.Status 
+2

添加一點上下文,解釋或評論可能會使這個答案更有幫助。 – skrrgwasme 2014-09-03 23:34:49

0

正如查指出,該條款Group By的關鍵是:

Select P.ProductName,WFS.Status,sum(OI.Quantity),sum(OI.Price) 
from OrderItem As OI 
Inner Join [Order] As O On OI.OrderID = O.ID AND OI.ItemType = 1 
Inner Join Product P On OI.ProductID = P.ID 
Inner Join WorkFlowStatus As WFS On O.StatusID = WFS.ID 
group by productName, Status 
+0

我試過這個查詢,但它仍然顯示重複的產品名稱。我不知道什麼是錯的。我在OI表中是唯一的項目ID包含的工作流程和產品的FK,所以我有項目唯一的ID,但產品的甘蔗是duplilcate,所以我想,如果產品有相同的比總結數量和價格,但項目ID是唯一的,之所以GROUPBY犯規工作。如果我是正確的。 – Muhabutti 2014-09-03 23:34:43

+0

因爲我們在ProductName和Status上進行分組,所以它應該只按唯一的名稱和狀態進行分組,無論是多個產品名稱相同還是多個WorkFlowStatus狀態不同。當然,如果數據庫中的值略有不同,如最後有空白,所有投注都關閉。有沒有機會讓您的產品名稱中有空格? – 2014-09-03 23:49:16

+0

是可能烏爾正確的,我會檢查它,但我的問題是,如果在一排一列具有獨特的價值和其他列中的值出現的仍然有效,我的意思是兩個項目可以有同樣的產品,但不同的數量和複製在表中比組價錢。 – Muhabutti 2014-09-03 23:56:03

0

'過度使用分區由' 可以提供幫助。 例如

選擇產品名稱, 狀態, 數量, (SUM(數量)OVER(PARTITION BY產品名稱))作爲TotalQuantity FROM YourTableName並加入