2010-08-05 45 views
1

我正在创建一个带有聚合的简单查询。这个例子是:Subsonic 3查询 - 聚合错误

string query = new SubSonic.Query.Select(
     SubSonic.Query.Aggregate.GroupBy("ProductID", "ID"), 
     SubSonic.Query.Aggregate.Max("Price", "MaxPrice") 
    ).From("Orders").ToString(); 

SQL结果是:

SELECT ProductID AS ID, MAX(Price) AS MaxPrice 
FROM [Orders] 

时,结果应该是:

SELECT ProductID AS ID, MAX(Price) AS MaxPrice 
FROM [Orders] 
GROUP BY ProductID 

在SubSonic2.2结果是正确的,但在Subsonic3,该集团BY语句消失并且查询只返回一行。

我的SqlQuery表达是否正确,或者它是SubSonic3中的错误?

回答

0

不完全确定确切的语法,我用的是

MyTableClass.All().Max 

符号查询it.Your例子看起来错的,因为你的GROUPBY里面你选择。 groupBy不是选择的一部分,因此您可能需要将该GroupBy移动到您选择的范围之外

+0

感谢您的回复,但我需要每个产品的最高价格。 我可以重写查询: SqlQuery query1 = new Select()。From(“Orders”); query1.Aggregates = new列表 { 新聚合(“ProductID”,“ID”,AggregateFunction.GroupBy), 新聚合(“Price”,AggregateFunction.Max)}; MessageBox.Show(query1.ToString()); 但同样的结果,我需要'GROUP BY ProductID'sql语句来获得每个产品的最大价格。 – aris 2010-08-05 16:39:38

+0

问题是SqlQuery不会在SQL查询中生成'GROUP BY ProductID'部分 – aris 2010-08-05 16:41:45