在SQL中进行乘法运算

6

我需要通过搜索返回一个值,我需要做的是将两个字段相乘后求和。我有以下代码:

internal double TotalRes(long Id)
{
     double total = 0;
     Reserve rAlias = null;
     var query = Session.QueryOver<Item>();
     query = query.JoinAlias(e => e.Reserve, () => rAlias);
     query = query.Where(() => rAlias.Id == Id);
     query = query.Select(Projections.Sum<Item>(acct => acct.Ammount * acct.Wight));
     object result = query.UnderlyingCriteria.UniqueResult();
     if (result != null)
         total = Convert.ToDouble(result);
     return total;
}

出现以下错误:

变量“acct”类型为“tem”,在作用域“”中被引用,但未设置

我该如何返回该值?


1
Projections 是你的类还是 nhibernate 的一部分?(我从未使用过这个库) - Scott Chamberlain
这是NHibernate的一部分@ScottChamberlain。 - Pedro Franco
如果您从查询中获取Ammount和Wight,然后进行乘法运算,会发生什么?我认为投影不知道acct.Ammount或acct.Wight是什么。 - Nate
2个回答

1

试试这个

Item rItem = null;
var query = Session.QueryOver<Item>(() => rItem);
...
query = query.Select(Projections.Sum(
        Projections.SqlFunction(new VarArgsSQLFunction("(", "*", ")"),
        NHibernateUtil.Double,
        Projections.Property(() => rItem.Ammount),
        Projections.Property(() => rItem.Wight))));

1
尝试在映射中使用公式来做类似于这样的事情。
Map(c => c.total).formula("(select sum(Ammount * Wight) from acct)");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接