@@ -12,32 +12,32 @@ namespace NHibernate.Criterion
12
12
public class AvgProjection : AggregateProjection
13
13
{
14
14
public AvgProjection ( IProjection projection ) : base ( "avg" , projection ) { }
15
- public AvgProjection ( String propertyName ) : base ( "avg" , propertyName ) { }
15
+ public AvgProjection ( string propertyName ) : base ( "avg" , propertyName ) { }
16
16
17
- public override SqlString ToSqlString ( ICriteria criteria , int loc , ICriteriaQuery criteriaQuery ,
18
- IDictionary < string , IFilter > enabledFilters )
17
+ public override SqlString ToSqlString ( ICriteria criteria , int loc , ICriteriaQuery criteriaQuery , IDictionary < string , IFilter > enabledFilters )
19
18
{
20
19
ISessionFactoryImplementor factory = criteriaQuery . Factory ;
21
20
SqlType [ ] sqlTypeCodes = NHibernateUtil . Double . SqlTypes ( factory ) ;
22
21
string sqlType = factory . Dialect . GetCastTypeName ( sqlTypeCodes [ 0 ] ) ;
23
- string parameter ;
22
+
23
+ var sql = new SqlStringBuilder ( ) . Add ( aggregate ) . Add ( "(" ) ;
24
+ sql . Add ( "cast(" ) ;
24
25
if ( projection != null )
25
26
{
26
- parameter =
27
- SqlStringHelper . RemoveAsAliasesFromSql ( projection . ToSqlString ( criteria , loc , criteriaQuery , enabledFilters ) ) . ToString ( ) ;
27
+ sql . Add ( SqlStringHelper . RemoveAsAliasesFromSql ( projection . ToSqlString ( criteria , loc , criteriaQuery , enabledFilters ) ) ) ;
28
28
}
29
29
else
30
30
{
31
- parameter = criteriaQuery . GetColumn ( criteria , propertyName ) ;
31
+ sql . Add ( criteriaQuery . GetColumn ( criteria , propertyName ) ) ;
32
32
}
33
- string expression = string . Format ( "{0}(cast({1} as {2})) as {3}" , aggregate , parameter , sqlType ,
34
- GetColumnAliases ( loc , criteria , criteriaQuery ) [ 0 ] ) ;
35
- return new SqlString ( expression ) ;
33
+ sql . Add ( " as " ) . Add ( sqlType ) . Add ( ")" ) ;
34
+ sql . Add ( ") as " ) . Add ( GetColumnAliases ( loc , criteria , criteriaQuery ) [ 0 ] ) ;
35
+ return sql . ToSqlString ( ) ;
36
36
}
37
37
38
38
public override IType [ ] GetTypes ( ICriteria criteria , ICriteriaQuery criteriaQuery )
39
39
{
40
40
return new IType [ ] { NHibernateUtil . Double } ;
41
41
}
42
42
}
43
- }
43
+ }
0 commit comments