estoy tratando de hacer el equivalente de este código SQL¿Cómo hacer una suma condicional con 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
Con Nhibernate.
Hasta ahora he intentado
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)
)
Pero esto me da el siguiente error:
Could not determine member from IIF((Convert(c.myProperty) = 2), 1, 0)
¿Tiene usted alguna idea?
EDIT 1: Puedo obtener el resultado con 2 consultas, pero quiero hacerlo en solo 1 consulta.
EDIT 2: Estoy usando QueryOver aquí.
Parece que es mejor usar 'COUNT' en lugar de' SUM' . – yoozer8
Count no acepta condiciones, ¿cómo podría usarlo aquí? Dos consultas? –
Si no acepta consultas, puede usar 'WHERE' para seleccionar solo las que desea contar y luego use' COUNT'. – yoozer8