使用 postgres 对来自 2 个不同表的 2 个不同列求和

Sum 2 different columns from 2 different tables with postgress

我创建了一个查询,用于汇总来自 2 个不同表的 2 个不同列的值:

'SELECT SUM (sum) AS income FROM incomes where company_id =  AND income_date BETWEEN  AND  
UNION ALL
SELECT SUM (sum) AS total_outcome FROM outcomes where company_id =  AND outcome_date BETWEEN  AND ',
[company_id, start, end]

我的问题是这两个结果是这样返回的:

[
{income: "55"},
{income: "33"}
]

我的预期结果是:

[
{income: "55"},
{outcome: "33"}
]

看起来 postgress 忽略了第二个“AS”:/

UNION ALL 添加行,而不是列。因此,您在一列中得到两行,而不是在一行中得到两列。行名称由第一个 SELECT 语句定义。

你可以这样做:

SELECT
    (SELECT SUM (sum) FROM incomes where company_id =  AND income_date BETWEEN  AND ) as income,
    (SELECT SUM (sum) FROM outcomes where company_id =  AND outcome_date BETWEEN  AND ) as total_outcome

您的查询returns单个列和单个列只能有一个名称。

如果要标识值的“来源”,则需要添加另一列

SELECT 'income' as source, SUM (sum) AS value
FROM incomes 
where company_id =  
  AND income_date BETWEEN  AND  
UNION ALL
SELECT 'total_outcome', SUM (sum) 
FROM outcomes 
where company_id =  
  AND outcome_date BETWEEN  AND