我一直在尝试在 NHibernate QueryOver 中执行以下 T-SQL,但没有成功:
SELECT Id, SUM(CASE MyValue WHEN 1 THEN Volume ELSE Volume * -1 END)
FROM MyTable
GROUP BY Id
Run Code Online (Sandbox Code Playgroud)
我试图总结所有成交量,但MyValue=1应为正值,否则为负值。到目前为止,我得到了:
var result = this.Session.QueryOver<MyTable>()
.Select(Projections.Group<MyTable>(x => x.Id),
Projections.Conditional(Restrictions.Eq(Projections.Property<MyTable>(x
=> x.MyValue), '1'),
Projections.Property<MyTable>(x => x.Volume),
Projections.Property<MyTable>(x => x.Volume * -1)))
.List();
Run Code Online (Sandbox Code Playgroud)
但是你可以想象 NHibernate 不知道 column Volume * -1,那么我如何在我的 CASE 中进行这个计算?