How can I recreate a SQL statement using NHibernate that has an inner select case?

Posted by brianberns on Stack Overflow See other posts from Stack Overflow or by brianberns
Published on 2010-05-18T16:16:54Z Indexed on 2010/05/18 18:50 UTC
Read the original article Hit count: 281

I am trying to recreate something like the following SQL using NHibernate criteria:

select Range, count(*) from (
   select
      case
         when ent.ID between 'A' and 'N' then 'A-M'
         else 'Other'
      end as Range
   from Subject
) tbl
group by tbl.Range

I am able to create the inner select as follows:

session.CreateCriteria<Subject>()
   .SetProjection(
      Projections.Conditional(
         Expression.Between("Name", "A", "N"),
         Projections.Constant("A-M"),
         Projections.Constant("Other")))
   .List();

However, I can't figure out how to pipe those results into a grouping by row count.

© Stack Overflow or respective owner

Related posts about nhibernate

Related posts about criteria