MySQL - SUM和AS一样(test1)AS test2,SUM(test2)

时间:2012-05-10 17:51:35

标签: mysql sum

我有一个simmelar的问题, 我想在以下查询中总结“totaal_inclusief_btw”: 有人可以帮我解决这个问题吗?无法理解。

表1(facturen)

factuur_id    factuur_datum    factuur_btw_weergave
---------------------------------------------------------------------------
1             2012-05-10       inclusief
2             2012-05-10       exclusief

Tabel 2(factuur_regels)

regel_id    regel_factuur_id    regel_aantal   regel_bedrag   regel_btw
---------------------------------------------------------------------------
18          1                   1              40             19
19          1                   2              40             6
20          2                   1              40             19
21          2                   2              40             6

使用以下查询:

SELECT 
CASE    
 WHEN factuur_btw_weergave = 'inclusief' 
 THEN SUM(regel_bedrag*regel_aantal)
 WHEN factuur_btw_weergave = 'exclusief' 
 THEN SUM(((regel_bedrag*regel_aantal)/100)*(100+regel_btw))
END
AS totaal_inclusief_btw,
SUM(totaal_inclusief_btw) AS new
FROM factuur_regels
INNER JOIN facturen ON factuur_id = regel_factuur_id
GROUP BY factuur_datum

我收到错误:

#1054 - Unknown column 'totaal_inclusief_btw' in 'field list'

当我离开第二个SUM“SUM(totaal_inclusief_btw)AS new”时:

SELECT 
CASE    WHEN factuur_btw_weergave = 'inclusief' THEN SUM(regel_bedrag*regel_aantal)
        WHEN factuur_btw_weergave = 'exclusief' THEN SUM(((regel_bedrag*regel_aantal)/100)*(100+regel_btw))
        END
        AS totaal_inclusief_btw

FROM factuur_regels
LEFT JOIN facturen ON factuur_id = regel_factuur_id
WHERE factuur_datum = '2012-05-10'
GROUP BY factuur_datum

我会得到这个结果:

totaal_inclusief_btw: 
240 (this needs to be 252,4)

当我按“factuur_id”分组时:

SELECT 
CASE    WHEN factuur_btw_weergave = 'inclusief' THEN SUM(regel_bedrag*regel_aantal)
        WHEN factuur_btw_weergave = 'exclusief' THEN SUM(((regel_bedrag*regel_aantal)/100)*(100+regel_btw))
        END
        AS totaal_inclusief_btw

FROM factuur_regels
LEFT JOIN facturen ON factuur_id = regel_factuur_id
WHERE factuur_datum = '2012-05-10'
GROUP BY factuur_id

我会得到这个结果:

totaal_inclusief_btw: 
120
132.4

我希望有人能帮我这个查询!谢谢你

1 个答案:

答案 0 :(得分:1)

问题已解决

现在可以使用以下查询:

SELECT factuur_datum, SUM(totaal_inclusief_btw)
FROM    (
               SELECT  factuur_datum,
               CASE    WHEN factuur_btw_weergave = 'inclusief' THEN SUM(regel_bedrag*regel_aantal)
                            WHEN factuur_btw_weergave = 'exclusief' THEN SUM(((regel_bedrag*regel_aantal)/100)*(100+regel_btw))
                            END
                            AS totaal_inclusief_btw
               FROM factuur_regels
               LEFT JOIN facturen ON factuur_id = regel_factuur_id
               WHERE factuur_datum = '2012-05-10'
               GROUP BY factuur_id
               )q

此查询返回:252.4(正确)