0

我有一个运行正常但没有创建所需结果的查询,我希望此查询根据其PAYABLE_AMOUNT_DUEACTIONPAYABLE_AMOUNT字符串(PAYABLE_ACTION)。我的表的结构如下所示,值,

应付账款

我使用的逻辑如下,但它没有将所需的值插入到第三个表中(可以看到它始终为 0)

询问

INSERT INTO `payables`(`payable_action`, `payable_amount`, `payable_amount_due`) 
VALUES ('Cash Closed', '300', 
      '(SELECT SUM(payable_amount)
               FROM payables
               WHERE payable_action = 'Cash In') -
       (SELECT SUM(payable_amount)
               FROM payables
               WHERE payable_action = 'Cash Closed')
        ')

如您所见,它在 inpayable_amount和 inpayable_action但不是 in 中插入了值payable_amount_due,我不知道为什么以及如何做到这一点?谢谢

4

1 回答 1

1

你可以试试:

INSERT INTO payables( payable_action, payable_amount, payable_amount_due ) 
SELECT 'Cash Closed', '300', 
        SUM( payable_amount * (payable_action='Cash In' ) ) 
          - SUM( payable_amount * (payable_action='Cash Closed') ) 
FROM payables

编辑:这条线是做什么的?

SUM( payable_amount * ( payable_action='Cash In' ) )

对于每一行都(payable_action='Cash In')返回布尔值,但 mysql 的布尔值只有 0 或 1,因此我们将添加payable_action * 1满足操作条件payable_action * 0的行和其他行的总和。所以基本上只有那些采取适当行动的人才会被计算在内。

于 2013-06-17T16:49:54.937 回答