I'm using SqlQuery and the below syntax (field and table names changed)
Table with 4 columns: myGuidField, myDateField, myNumberField, myStringField
SqlQuery qry = new Select(
Aggregate.Avg(myTable.Columns.myNumberField),
Aggregate.GroupBy(myTable.Columns.myStringField))
.From(myTable.Schema)
.Where(myTable.Columns.myDateField)
.IsGreaterThanOrEqualTo(DateTime.Now.AddDays(-10));
The problem is that it generates this SQL:
SELECT AVG(myNumberField), myStringField
FROM [dbo].[myTable]
GROUP BY myStringField
HAVING [dbo].[myTable].[myDateField] >=@Date0
This generates an error because "Column 'dbo.myTable.myDateField' is invalid in the HAVING clause because it is not contained in either an aggregate function or the GROUP BY clause."
If SqlQuery generated the SQL code as a WHERE clause instead of HAVING clause then it would work. For example, this works:
SELECT avg(myNumberField), myStringField
FROM myTable
WHERE myDateField >= '6/29/2008'
GROUP BY myStringField
Is there a work around for this? I just need the SqlQuery to generate my Where expression using WHERE instead of HAVING.
thanks,