我需要帮助处理这个查询,这是我的输出:
idProduccion | hp | totalHp |
4 | 40 | 40 |
4 | 35 | 35 |
5 | 90 | 90 |
6 | 2500 | 2500 |如何用相同的idProduccion和hp列并显示所有行,例如:
idProduccion | hp | totalHp |
4 | 40 | 75 |
4 | 35 | 75 |
5 | 90 | 90 |
6 | 2500 | 2500 |
....这是我的sql查询
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发布于 2017-04-01 00:26:24
我已通过idproduction更改了您的组查询。
选择lp.idProduccion,lp.hp,lp1。从lotesproduccion lp左联接选择lp.idProduccion,sum(lp.hp)作为totalHp,从lotesproduccion组中选择lp.idProduccion)作为lp1 ON lp.idProduccion =lp1.idProducmon
发布于 2017-04-01 17:12:28
谢谢拉梅什·叶尔达,它运转得很好。实际上完整的查询是..。
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(因为because时),而不是显示整个行。
pd:我不知道如何在评论中添加代码。
https://stackoverflow.com/questions/43150650
复制相似问题