The syntax checker of the CSelectQuery API is making things a little difficult for me today.
I am trying to run an aggregate query to get a count of bugs for each category listed in descending order using the following code
CSelectQuery qryCasesByCategory = api.Database.NewSelectQuery("Bug");
qryCasesByCategory.AddInnerJoin("Category", "Category.ixCategory=Bug.ixCategory");
qryCasesByCategory.AddSelect("Category.sCategory as Category");
qryCasesByCategory.AddSelect("COUNT(*) as Total");
qryCasesByCategory.AddGroupBy("Category.sCategory");
qryCasesByCategory.AddOrderBy("Total");
The API throws an exception on the last line complaining that I haven't specified a table name.
System.ArgumentException: Invalid syntax: column names must be fully qualified with the table name (found "Total" expected "[TABLE].Total")
Server stack trace: at FogCreek.FogBugz.Database.CSqlParser.ParseColumn(CSqlTokenList tokens, Nullable
1 fTableNameRequired) at FogCreek.FogBugz.Database.CSqlParser.ParseTerm(CSqlTokenList tokens, Nullable1 fInsideSelect, Nullable1 fInsideInsert, Nullable1 fInsideOrderBy) at FogCreek.FogBugz.Database.CSqlParser.ParseExpression(CSqlTokenList tokens, Nullable1 fInsideSelect, Nullable1 fInsideInsert, Nullable1 fInsideOrderBy) at FogCreek.FogBugz.Database.CSqlParser.ParseOrderByTerm(CSqlTokenList tokens, Nullable1 fTableNameRequired) at FogCreek.FogBugz.Database.CSqlParser.ParseOrderByList(CSqlTokenList tokens) at FogCreek.FogBugz.Database.CSqlValidator.AssertValid(String s, String sType) at FogCreek.FogBugz.Database.CSqlValidator.AssertValidOrderByList(String s) at FogCreek.FogBugz.Database.CSelectQuery.AddOrderBy(String sSqlOrderBy) ...
Since there really is no table name for an aggregate, how can I tell the CSelectQuery to sort on an aggregate value?