SELECT
(SUM(L.total_linea) * I.porcentaje / 100) AS iva
FROM
linea_ventas L
JOIN
iva I ON L.id_iva = I.id_iva
GROUP BY
L.id_iva
我尝试使用LINQPad 5程序直接在我的数据库中编写查询,然后在我的代码中添加它,但我在此处被阻止:
from l in linea_ventas
join i in ivas on l.id_iva equals i.id_iva
group l by new { l.id_iva } into g
select new
{
iva = g.Sum(l => l.total_linea)
}
答案 0 :(得分:1)
这个SQL查询不正确,因为您应该在GROUP BY子句中使用SELECT子句中的内容(除非您在聚合函数中使用它),所以在这里您应该在GROUP BY中使用I.porcentaje
,尽管我不认为像百分比这样的分组是你想要的。
我想你想要考虑total_linea
的所有porcentaje
,所以,例如,你可以这样编写你的查询:
您加入后已正确加入表格,因为您只需要id_iva
和total_linea
以及porcentaje
,只能以匿名类型收集这些值,
然后按id_iva
分组(就像你自己一样),然后在分组中选择值并进行计算:
var result = from l in linea_ventas
join i in ivas on l.id_iva equals i.id_iva
select new {
l.id_iva,
value = l.total_linea * i.porcentaje / 100
} into selected
group selected by selected.id_iva into groups
select groups.Sum(v => v.value);