Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static Dictionary<object, object> AggregateGroupByRange(this QueryExecutor executor, Query query, ISessionHolder sessionHolder, string propertyName,
- AggregateType aggregateType)
- {
- var session = executor.GetSession(sessionHolder);
- if (session == null)
- return null;
- if (query == null)
- return null;
- var tempOrders = query.Orders;
- query.Orders = null;
- var criteria = executor.GetCriteria(session, query);
- var range = new []{0, 25, 50, 70};
- //not working
- var result1 = criteria.SetProjection(
- Projections.ProjectionList()
- .Add(Projections.GroupProperty(
- Projections.Conditional(
- Restrictions.Between(propertyName, "0", "50"),
- Projections.Constant("0-50"),
- Projections.Constant("Other"))), "Range")
- .Add(GetProjection(AggregateType.Count)(propertyName))
- )
- .List();
- //working
- var result = criteria
- .SetProjection(
- Projections.ProjectionList()
- .Add(
- Projections.GroupProperty(
- Projections.SqlProjection(
- @"case
- when CUES_TOTAL_SCORE between 0 and 50 then '0-50'
- else 'Other'
- end as Range",
- new[] { "Range" },
- new[] { NHibernateUtil.GetSerializable(typeof(double)) })))
- .Add(GetProjection(AggregateType.Count)(propertyName))
- )
- .List();
- query.Orders = tempOrders;
- return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement