我有以下需要在3个表上运行的简单SQL查询:

SELECT 
A.date,
SUM(A.number)
FROM A
GROUP BY
A.date

但是我还有另外两个表(B和C),我想对它们运行相同的查询.并将结果合并到一个表中作为输出.

我希望输出如下所示:

date A.number B.number C.number
2022 12322.1 9999999 888888

推荐答案

我们可以try 以下联合方法:

SELECT
    date,
    SUM(CASE WHEN src = 'A' THEN number ELSE 0 END) AS A_sum,
    SUM(CASE WHEN src = 'B' THEN number ELSE 0 END) AS B_sum,
    SUM(CASE WHEN src = 'C' THEN number ELSE 0 END) AS C_sum
FROM
(
    SELECT date, number, 'A' AS src FROM A
    UNION ALL
    SELECT date, number, 'B' FROM B
    UNION ALL
    SELECT date, number, 'C' FROM C
) t
GROUP BY date
ORDER BY date;

Sql相关问答推荐

PostgreSQL:如果发现多行具有相似列值,则跳过 Select 行

JSON列之间的Postgr聚合

用相同值更新行

判断序列索引处的序列是否完整

将一个数组反嵌套到另外两个数组SQL中(Athena/presto)

表函数的作用域和功能

在VB.NET中如何在MS Access数据库中创建SQL项目历史库存卡

如何解决错误;ORA-00911:无效字符;在果朗?

使用特定的Order By子句随机化SQL输出

识别SQL Server中的重复数字

snowflake中的动态文件名生成

获取所有用户的第一次和最后一次发货以及到达日期

如何优化仅返回符合条件的三条记录的查询?

Postgres更新增量之间的差异

计数时如何为所有时间间隔返回 0 而不是什么都不返回

计算 PostgreSQL 中的平均会话长度

SELECT 用于 Parent、Children 和 ORDER BY [Order] 列

当计数为 0 时显示行

SQL Group By 然后映射出是否存在值

在 UTF 编码字符上应用 SQL LIKE 语句没有给出任何结果