gpt4 book ai didi

mysql - 同一查询中不同列的多个求和

转载 作者:行者123 更新时间:2023-11-29 11:29:42 24 4
gpt4 key购买 nike

如果内连接为真,是否可以对列求和,如果另一个内连接为真,是否可以对另一个列求和?即

SELECT t1.debit 
, t2.credit
, t1.ID
, t2.ID
FROM
( SELECT SUM(booking_value) debit
, gl_acct.id_fin_gl_acct ID
FROM bookings
JOIN gl_acct
ON (CONCAT('1',gl_acct.id_fin_gl_acct) = bookings.id_debit_account)
) t1
JOIN
( SELECT SUM(booking_value) credit
, gl_acct.id_fin_gl_acct ID
FROM bookings
JOIN gl_acct
ON (CONCAT('1',gl_acct.id_fin_gl_acct)=bookings.id_credit_account)
) t2
ON (t1.ID = t2.ID)
GROUP
BY t1.ID

请解释你的答案。

最佳答案

条件聚合的示例。

 SELECT t.id_account
, SUM(IF(t.cr_or_db='cr',t.tot_booking_value,0)) AS `tot_credit`
, SUM(IF(t.cr_or_db='db',t.tot_booking_value,0)) AS `tot_debit`
FROM (
SELECT 'cr' AS `cr_or_db`
, c.id_credit_account AS `id_account`
, SUM(c.booking_value) AS `tot_booking_value`
FROM bookings c
GROUP BY c.id_credit_account
UNION ALL
SELECT 'db' AS `cr_or_db`
, d.id_debit_account AS `id_account`
, SUM(d.booking_value) AS `tot_booking_value`
FROM bookings d
GROUP BY d.id_debit_account
) t
GROUP
BY t.id_account

内联 View t为我们提供每个id_credit_account的总贷方和每个id_debit_account的总借方。

原始查询将这两个 id_ 列连接到同一个帐户表,因此我们假设它们都是另一个表的外键,这意味着它们是相同的数据类型...

仅当出于某种原因我们需要包含 gl_acct 表时才需要连接操作。假设 id_fin_gl_acctgl_acct 中是唯一的...我们可以在 GROUP BY 子句之前添加联接操作。

    ...   
) t

JOIN gl_acct g
ON CONCAT('1',g.id_fin_gl_acct) = t.id_account

GROUP
BY t.id_account

关于mysql - 同一查询中不同列的多个求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37614531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com