2015-04-08 36 views
0

我正在研究一個SQL查詢,該查詢應按列bidBroker進行分組並返回表中的所有列。按單列進行分組,但返回所有列而不包括其他列在聚合函數中

我試了一下使用下面的查詢

select Product, 
    Term, 
    BidBroker, 
    BidVolume, 
    BidCP, 
    Bid, 
    Offer, 
    OfferCP, 
    OfferVolume, 
    OfferBroker, 
    ProductID, 
    TermID 
from canadiancrudes 
group by BidBroker 

上面的查詢如下

列「canadiancrudes.Product」把我的錯誤是在選擇列表中無效,因爲它不包含不管是集合函數還是GROUP BY子句。

是否有任何其他方式返回bidBroker的所有數據分組而不更改來自CanadadianCrudes的數據的順序?

+0

你想用這個分組完成什麼?某種示例數據+預期輸出將有助於理解更多信息。 –

+0

可能重複[什麼是「無效,不包含在任何聚合函數」消息的意思?](http://stackoverflow.com/questions/18258704/what-does-the-invalid-not-contained-in-非彼一個聚集型函數消息-M) – Tanner

回答

1

首先,如果您要聚合,您應該瞭解agregate功能。 然後分組變得更加明顯。

我認爲你應該解釋一下你在這裏完成的任務,因爲我懷疑你是在嘗試排序布丁Bidbroker而不是分組。

1

如果你的意思是你想BidBroker進行排序,你可以使用:

SELECT Product,Term,BidBroker,BidVolume,BidCP,Bid,Offer,OfferCP,OfferVolume,OfferBroker,ProductID,TermID 
FROM canadiancrudes 
ORDER BY BidBroker 

如果你想GROUP BY,並給例如數據,你可以使用:

SELECT c1.Product,c1.Term,c1.BidBroker,c1.BidVolume,c1.BidCP,c1.Bid,c1.Offer,c1.OfferCP,c1.OfferVolume,c1.OfferBroker,c1.ProductID,c1.TermID 
FROM canadiancrudes c1 
WHERE c1.YOURPRIMARYKEY IN (
    select MIN(c2.YOURPRIMARYKEY) from canadiancrudes c2 group by c2.BidBroker 
) 

更換YOURPRIMARYKEY與您的專欄與您的行唯一的ID。

0

正如其他人所說,如果您不想彙總某些內容,請勿使用「group by」。如果您確實想要聚合一列,但也包括其他列,請考慮研究「分區」。

相關問題