计算MySQL中的两个别名值

问题描述 投票:0回答:2

如何计算这两个别名并显示在其他列中?

SELECT SUM(qty1) AS ali_qty1,
    (SELECT SUM(qty2) FROM table2 WHERE col2 = 'B') AS ali_qty2,
    (SELECT SUM(ali_qty1) - SUM(ali_qty2) as total_qty)
FROM table1
WHERE col1= 'A'

桌子1

ID | col1  | qty1
------------------
1  | A       | 50
2  | A       | 20

桌子2

ID | col2  | qty2
------------------
1  | B       | 50
2  | B       | 10

预期产出

ID | ali_qty1  | ali_qty2 | ali_qty3
-------------------------------------
1  |  70          | 60        | 10    
sql mysql inner-join aggregate-functions
2个回答
1
投票

对于这些数据,我们可以交叉连接两个聚合查询,然后执行计算:

select t1.ali_qty1, t2.ali_qty2, t1.ali_qty1 - t2.ali_qty2 ali_qty3
from (select sum(qty1) ali_qty1 from table1 where col1 = 'A') t1
cross join (select sum(qty2) ali_qty2  from table2) t2

请注意,这总是返回一行 - 但是两个总和中的任何一个都可能是

null
,在这种情况下,您可能希望在减法中使用
coalesce()


0
投票
SELECT ali_qty1, ali_qty2 , (ali_qty2 - ali_qty1) AS ali_qty3
FROM (
select
(select sum(qty1)   from table1 where col1='A')  as ali_qty1,
(select sum(qty2)   from table2 where col2='B') as ali_qty2
) T1
© www.soinside.com 2019 - 2024. All rights reserved.