首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql -一列一组,但显示所有行

mysql -一列一组,但显示所有行
EN

Stack Overflow用户
提问于 2017-03-31 22:37:45
回答 2查看 520关注 0票数 0

我需要帮助处理这个查询,这是我的输出:

代码语言:javascript
复制
idProduccion | hp   | totalHp |
      4      | 40   | 40      |
      4      | 35   | 35      |  
      5      | 90   | 90      |
      6      | 2500 | 2500    |

如何用相同的idProduccion和hp列并显示所有行,例如:

代码语言:javascript
复制
idProduccion | hp   | totalHp |
      4      | 40   | 75      |
      4      | 35   | 75      |  
      5      | 90   | 90      |
      6      | 2500 | 2500    |
....

这是我的sql查询

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

票数 0
EN

Stack Overflow用户

发布于 2017-04-01 17:12:28

谢谢拉梅什·叶尔达,它运转得很好。实际上完整的查询是..。

代码语言:javascript
复制
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:我不知道如何在评论中添加代码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43150650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档