使用 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
我创建了一个查询,用于汇总来自 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