【问题标题】:Sum of subquery with sum子查询的总和与总和
【发布时间】:2012-02-22 14:17:07
【问题描述】:

我有一个查询,它给了我一个总计列,查询看起来像这样:

SELECT SUM( BoekRegelBedrag ) AS total, 
    BoekRegelPeriode, BoekRegelGrootboekNr, 
    BaOmschrijving, BaSoort 
FROM BoekstukRegels 
LEFT JOIN ( 
        SELECT BaOmschrijving, BaSoort, BaGbNumber 
        FROM balansen 
        WHERE BauserId = 45 
        GROUP BY BaGbNumber 
    ) tbl ON BoekRegelGrootboekNr = BaGbNumber 
WHERE BoekregelUserId = 45 
    AND BoekRegelPeriode BETWEEN '201201' AND '201212' 
    AND BaSoort = 2 
GROUP BY BoekRegelGrootboekNr

我现在想要的是对给定查询的结果求和。

我该怎么做?

【问题讨论】:

    标签: mysql subquery sum


    【解决方案1】:

    WITH ROLLUP 修饰符添加到您现有的查询中。这将返回一个额外的行,常规列中包含 NULL 值,total 列中包含所需的总计值。

    SELECT SUM( BoekRegelBedrag ) AS total, BoekRegelPeriode, BoekRegelGrootboekNr, BaOmschrijving, BaSoort 
        FROM BoekstukRegels 
            LEFT JOIN (SELECT BaOmschrijving, BaSoort, BaGbNumber 
                           FROM balansen 
                           WHERE BauserId = 45 
                           GROUP BY BaGbNumber )tbl 
                ON BoekRegelGrootboekNr = BaGbNumber 
        WHERE BoekregelUserId = 45 
            AND BoekRegelPeriode BETWEEN '201201' AND '201212' 
            AND BaSoort = 2 
        GROUP BY BoekRegelGrootboekNr
        WITH ROLLUP
    

    【讨论】:

    • 我的表中有一些负值,是否可以在总和之前将它们设为正值?
    • @LeonvanderVeen 您可以使用ABS 函数返回绝对值:SELECT SUM(ABS(BoekRegelBedrag)) AS total...
    • 你的主人!再次感谢!
    • 最后一个问题,因为我要禁食。是否可以在 SUM 之后和 ROLLUP 之前使用该 ABS 函数。所以我只想使总和列的结果为正数并将这些结果相加。
    • @LeonvanderVeen:这是不可能的。您必须将原始查询包装在可以执行此操作的新查询中。
    猜你喜欢
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    相关资源
    最近更新 更多