我试图做到这一点SQL代码如何与Nhibernate做一个条件和?
SELECT
ID
SUM(CASE WHEN myProperty = 2 THEN 1 ELSE 0 END) as nbRowWithValueOf2,
SUM(CASE WHEN myProperty = 3 THEN 1 ELSE 0 END) as nbRowWithValueOf3
FROM Foo
GROUP BY ID
与NHibernate的等价物。
到目前为止,我试过
queryable = queryable
.Select(
Projections.Group<Foo>(c => c.ID),
Projections.Sum<Foo>(c => c.myProperty == MyEnum.Two ? 1 : 0)
Projections.Sum<Foo>(c => c.myProperty == MyEnum.Three ? 1 : 0)
)
但是这给了我以下错误:
Could not determine member from IIF((Convert(c.myProperty) = 2), 1, 0)
你有什么想法?
编辑1:我可以得到2查询的结果,但我只想在1查询中做到这一点。
编辑2:我在这里使用QueryOver。
看起来你应该使用'COUNT'代替SUM'的' 。 – yoozer8 2012-03-19 16:55:21
伯爵不接受条件,我怎么能在这里使用它?两个查询? – 2012-03-19 16:57:19
如果它不接受查询,你可以使用'WHERE'来选择你想要计数的数字,然后使用'COUNT'。 – yoozer8 2012-03-19 17:00:22