Помощь с критериями nhibernate Query Groupby Property
-
28-10-2019 - |
Вопрос
У меня есть ниже запрос,
SearchTemplate Template = new SearchTemplate();
Template.Criteria = DetachedCriteria.For(typeof(table1));
Template.Criteria.CreateCriteria("table2", "Usr", NHibernate.SqlCommand.JoinType.InnerJoin)
.SetProjection(Projections.ProjectionList()
.Add(Projections.Count("Usr.ID"), "UserCount")
.Add(Projections.GroupProperty("Location"), "ALocation")
.Add(Projections.GroupProperty("Company"), "ACompany")
.Add(Projections.GroupProperty("Usr.Designation"), "ADesignation"));
Приведенный выше запрос дает мне данные как,
Location Company Designation Count
Florida A Manager 3
Florida A QA 5
Texas B Manager 6
Texas B QA 7
Есть ли способ изменить запрос, чтобы он давал данные как,
Location Company Manager QA
Florida A 3 5
Texas B 6 7
Здесь менеджер и QA - единственные возможные значения, которые могут перейти в поле обозначения ..
Решение
Вместо
.Add(Projections.Count("Usr.ID"), "UserCount")
.Add(Projections.GroupProperty("Usr.Designation"), "ADesignation")
Вам понадобится два прогноза, один на столбец на результат:
.Add(Projections.Sum(Projections.Conditional(
Restrictions.Eq("Usr.Designation", "Manager"),
Projections.Constant(1),
Projections.Constant(0)))
.Add(Projections.Sum(Projections.Conditional(
Restrictions.Eq("Usr.Designation", "QA"),
Projections.Constant(1),
Projections.Constant(0)))
Не связан с StackOverflow