Tôi đang cố gắng để làm tương đương của Bộ luật SQL nàyLàm thế nào để thực hiện Sum có điều kiện với 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
Với Nhibernate.
Cho đến nay tôi đã cố gắng
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)
)
Nhưng điều này mang lại cho tôi những lỗi sau:
Could not determine member from IIF((Convert(c.myProperty) = 2), 1, 0)
Bạn có bất cứ ý tưởng?
EDIT 1: Tôi có thể nhận được kết quả với 2 truy vấn nhưng tôi muốn thực hiện điều này chỉ trong 1 truy vấn.
CHỈNH SỬA 2: Tôi đang sử dụng QueryOver tại đây.
Dường như bạn có lẽ nên sử dụng 'COUNT' thay vì' SUM' . – yoozer8
Đếm không chấp nhận các điều kiện, làm thế nào tôi có thể sử dụng nó ở đây? Hai truy vấn? –
Nếu nó không chấp nhận truy vấn, bạn có thể sử dụng 'WHERE' để chỉ chọn những cái bạn muốn đếm, và sau đó sử dụng' COUNT'. – yoozer8