如何计算这两个别名并显示在其他列中?
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
对于这些数据,我们可以交叉连接两个聚合查询,然后执行计算:
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()
。
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