2013-04-18 23 views
1

我使用下面的查詢,但它顯示了一些重複的項目。所以我使用group函數,但它不起作用。羣組函數不能在SQL服務器上工作

SELECT p.productId, p.productName, p.catId, p.subCatId, p.productType, 
     p.modelNo, p.picUrl, p.color, p.theme, p.productPrice, p.discountedPrice, 
     p.quantity, p.details, p.mainPageDisplay, p.productPageDisplay, 
     s.subCatId AS Expr1, 
     s.subCatName, s.catId AS Expr2, 
     s.rank, s.subCatName AS Expr3 
FROM (products p INNER JOIN 
     subCategories s ON p.catId = s.catId) 
WHERE (p.color = 'red') group By p.productName 

該查詢工作正常,但是當我添加group by時,它不起作用。

+2

使用ORDER BY子句GROUP BY FOR FUNCITONS MIN MAX等 – realnumber3012

+0

group by是隻與聚合函數或列通過它聚合.. –

+3

當您使用'GROUP BY'時,所有列需要在' GROUP BY'或包含在一個聚合中 - 所以你需要告訴我們/ SQL Server你想對每個不是'productName'的列做什麼 - 我們應該使用MAX()或MIN()對於每一列? –

回答

1

您的SELECT聲明不包含任何aggregate functions,因此GROUP BY聲明不合適。

+0

是的,這是錯誤的,我也使用DISTINCT,但顯示相同的reult –

2

你並不需要選擇不同行的GROUP BY,你需要DISTINCT

SELECT DISTINCT p.productId, p.productName, p.catId, p.subCatId, p.productType, 
     p.modelNo, p.picUrl, p.color, p.theme, p.productPrice, p.discountedPrice, 
     p.quantity, p.details, p.mainPageDisplay, p.productPageDisplay, 
     s.subCatId AS Expr1, 
     s.subCatName, s.catId AS Expr2, 
     s.rank, s.subCatName AS Expr3 
FROM (products p INNER JOIN 
     subCategories s ON p.catId = s.catId) 
WHERE (p.color = 'red') 
+0

它不能再次顯示重複條款 –

+0

這意味着您需要不同的產品,以及有關子類別的信息。向我們顯示您的數據,以及您的需求。 –

+0

我沒有10點在stackoverflow張貼JPG的概率 –

0

您需要使用的所有列在SELECT子句中的GROUP BY子句或選擇關鍵字後使用DISTINCT關鍵字。

0

SQL GROUP BY聚合(合併和計算)列值爲單個記錄值。 GROUP BY需要運行計算的表列的列表。

這個link有一個例子來幫助你理解這個概念。

相關問題