gpt4 book ai didi

c# - 创建 NHibernate Queryover 以获取两个字段乘积的总和

转载 作者:太空狗 更新时间:2023-10-30 00:19:00 25 4
gpt4 key购买 nike

我有两个表 InvoiceInvoiceLineItem .这InvoiceLineItem表包含:

Id
InvoiceId
Quantity
UnitPrice

列。我想创建 NHibernate QueryOver 语句以按 InvoiceId 对发票行项目进行分组并得到 UnitPrice 的乘积之和和 Quantity

SQL是这样的

SELECT InvoiceId, SUM(Quantity*UnitPrice) AS Total
FROM InvoiceLineItem
GROUP BY InvoiceId

我用了Projections.Sum但我不确定我们如何将其中的两列相乘(如果这是正确的方法)。

最佳答案

看起来没有什么好方法可以做到这一点。建筑 this answer ,您可以使用 VarArgsSQLFunction:

InvoiceLineItem lineItemAlias = null;

session.QueryOver<InvoiceLineItem>(() => lineItemAlias)
.SelectList(list => list
.Select(Projections.Sum(
Projections.SqlFunction(new VarArgsSQLFunction("(", "*", ")"),
NHibernateUtil.Double,
Projections.Property(() => lineItemAlias.Quantity),
Projections.Property(() => lineItemAlias.UnitPrice))))
.SelectGroup(() => lineItemAlias.Invoice.Id)
// TransformUsing, List<>, etc.

这将生成如下所示的 SQL:

SELECT
sum((this_.Quantity*this_.UnitPrice)) as y0_,
this_.InvoiceId as y1_
FROM
InvoiceLineItem this_
GROUP BY
this_.InvoiceId

关于c# - 创建 NHibernate Queryover 以获取两个字段乘积的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26588942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com