我需要这个查询的帮助,这是我的输出:
idProduccion | hp | totalHp |
4 | 40 | 75 |
4 | 35 | 75 |
5 | 90 | 90 |
6 | 2500 | 2500 |
....
如何将hp列与相同的idProduccion相加并显示所有行,例如:
SELECT
lp.idProduccion,lp.hp, totalHp
FROM
lotesproduccion lp
JOIN
(SELECT
lp.hp, lp.idlotesproduccion, sum(lp.hp) AS totalHp
FROM
lotesproduccion lp
GROUP BY lp.idlotesproduccion) AS lp1 ON lp.idlotesproduccion = lp1.idlotesproduccion
这是我的SQL查询
user_id
答案 0 :(得分:0)
我已通过idproduction
更改了您的群组查询选择 lp.idProduccion,lp.hp,lp1.totalHp 从 lotesproduccion lp 离开加入 (选择 lp.idProduccion,sum(lp.hp)AS totalHp 从 lotesproduccion lp GROUP BY lp.idProduccion)AS lp1 ON lp.idProduccion = lp1.idProduccion
答案 1 :(得分:0)
谢谢@Ramesh Yelda,它确实很好..实际上完整的查询就是这个..
SELECT
il.IdLoteNuevo AS id_lotes,
icu.idCultivosNuevo AS id_cultivos,
YEAR(p.fechaInicio) * 10000 + MONTH(p.fechaInicio) * 100 + DAY(p.fechaInicio) AS id_fechaInicio,
YEAR(p.fechaCierre) * 10000 + MONTH(p.fechaCierre) * 100 + DAY(p.fechaCierre) AS id_fechaFin,
CAST(p.estado AS SIGNED INTEGER) AS estado_produccion,
rendimiento_hectarea,
rendimiento_bruto,
superficie_producida,
lluvia_produccion,
gastos_produccion
FROM
(SELECT
idlotes,
idproduccion,
idlotesproduccion,
TRUNCATE(SUM(rb), 2) AS rendimiento_hectarea,
TRUNCATE(SUM(rb * hp), 2) AS rendimiento_bruto,
TRUNCATE(SUM(hp), 2) AS superficie_producida
FROM
lotesproduccion
GROUP BY idlotesproduccion) AS lp
JOIN
ids_lotes il ON il.idLotesProduccion = lp.idlotesproduccion
JOIN
(SELECT
c.idLote,
SUM(c.lluvia) lluvia_produccion,
lp.idlotesproduccion
FROM
clima c
JOIN lotesproduccion lp ON c.idlote = lp.idlotes
JOIN produccion p ON p.idproduccion = lp.idProduccion
WHERE
c.fecha >= p.fechaInicio
AND c.fecha <= p.fechaCierre
GROUP BY lp.idlotesproduccion) c ON c.idlotesproduccion = lp.idlotesproduccion
JOIN
produccion p ON p.idproduccion = lp.idProduccion
JOIN
ids_cultivos icu ON icu.idCultivos = p.idCultivo
JOIN
(SELECT
lp.idlotesproduccion,
hectareas,
totalHp,
CASE
WHEN gp.costo IS NULL THEN 0
ELSE TRUNCATE((SUM(gp.costo) * (hectareas)) / (totalHp), 2)
END AS gastos_produccion
FROM
gastosproduccion gp
JOIN (SELECT
lp.idProduccion,
lp.hp AS hectareas,
lp1.totalHp AS totalHp,
lp.idlotesproduccion
FROM
lotesproduccion lp
LEFT JOIN (SELECT
lp.idProduccion, SUM(lp.hp) AS totalHp
FROM
lotesproduccion lp
GROUP BY lp.idProduccion) AS lp1 ON lp.idProduccion = lp1.idProduccion) AS lp ON lp.idProduccion = gp.idProduccion
GROUP BY lp.idlotesproduccion) gp ON gp.idlotesproduccion = lp.idlotesproduccion
GROUP BY p.fechaInicio , p.fechaCierre , il.IdLoteNuevo , icu.idCultivosNuevo;
现在它工作得很好,唯一的疑问是,当gp.costo为null时,它应该显示0(因为de case when),而不是显示完整的行。
pd:我不知道如何在评论中添加代码