2013-07-23 33 views
0

樣品例如:如何對錶中的行進行分組而不使用聚合函數?

SELECT 
    Equip.name, equip.type, region.regionname, region.equipfk 
FROM 
    Equip 
INNER JOIN 
    region on Equip.equippk = region.equipfk 
GROUP BY 
    Equip.Name, region.equipfk     

預期輸出:

name type  regionname equipfk 
---------------------------------------- 
TCT  Steel  detroit  8235 
TCT  steel  detroit  8235 
GTH  COPPER  michigan  8569 
GCT  COPPER  michigan  8569 

我有一個包含10列的表。我想使用group by子句通過某些id對每行進行分組。我不想在選擇查詢中使用任何聚合函數。是否有任何替代方法使用group by子句並避免選擇查詢中的聚合函數。

在此先感謝。

+0

你在搜索'DISTINCT'嗎?如果不是這樣,假設有一些列需要「GROUP BY」和SELECT的一些*其他*列,那麼這些*其他列的值是如何確定的? –

+0

總之,不,你不能。現在看來你實際上是在尋找'ORDER BY'而不是'GROUP BY'。 – peterm

+0

您需要發佈一些帶有預期結果的樣本數據以幫助您 – Madhivanan

回答

0

這聽起來像你使用GROUP BY在試圖排序行(它只能通過一個巧合的副作用,不保證)。如果是這樣的話,你需要ORDER BY代替:

SELECT 
    Equip.name, equip.type, region.regionname, region.equipfk 
FROM 
    Equip 
INNER JOIN 
    region on Equip.equippk = region.equipfk 
ORDER BY 
    Equip.Name, region.equipfk 

兩個GROUP BY,並出現進行排序DISTINCT農產品輸出 - 但這是他們是如何已經實施的只有一個副作用,許多事情(服務器上的負載,服務器配置,熱修補程序,服務包,主要升級)可能會更改行返回的順序 - 除非也有ORDER BY子句。

相關問題