我正在处理一个SQL查询,该查询应该按照bidBroker列进行分组并返回表中的所有列。
我使用以下查询尝试了它
select Product,
Term,
BidBroker,
BidVolume,
BidCP,
Bid,
Offer,
OfferCP,
OfferVolume,
OfferBroker,
ProductID,
TermID
from canadiancrudes
group by BidBroker
上面的查询给我一个错误如下
Column' canadiancrudes.Product'在选择列表中无效,因为它不包含在聚合函数或 GROUP BY子句。
有没有其他方法可以返回bidBroker的所有数据分组,而不会更改来自CanadadianCrudes
的数据顺序?
答案 0 :(得分:1)
首先,如果你想要聚集,你应该学习agregate功能。 然后分组变得更加明显。
我认为你应该解释一下你在这里想要完成什么,因为我怀疑你是在尝试排序Bidbroker,而不是分组。
答案 1 :(得分: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的列。
答案 2 :(得分:0)
正如其他人所说,如果你不想聚合某些东西,请不要使用“分组依据”。如果您确实希望汇总一列但也包括其他列,请考虑研究“分区”。