2个单独表格的总和

SUM of 2 separate tables

我下面有 2 个表格

Table 1

ID  TYPE MONTH QTY
1   I6    1     5
2   I5    2     5
3   I4    1     5
4   I6    2     5

Table 2

ID  TYPE MONTH QTY
1   I6    1     5
2   I5    1     5
3   I5    2     5

期望的输出(两个表的总和)

TYPE MONTH1QTY MONTH2QTY
IP4    5          0
IP6    10         5
IP5    5          10

我怎样才能做到这一点?

提前致谢。

因为两个 table 的格式相同,所以使用 UNION ALL (NOT[= 将两个 table 放在一起很简单30=] 只是 UNION,因为它删除了数据集的重复项).

然后您可以使用 SUM(CASE WHEN) 来旋转您的数据。

SELECT
  type,
  SUM(CASE WHEN month = 1 THEN qty END)   AS month_1_qty,
  SUM(CASE WHEN month = 2 THEN qty END)   AS month_2_qty
FROM
(
    SELECT * FROM table1
    UNION ALL
    SELECT * FROM table2
)
   unified_table
GROUP BY
    type

请注意,如果没有动态 SQL,您必须对要查询的月份进行硬编码。 (您不能仅仅因为数据中出现了新的月份就出现额外的列 'magically'。)

在您不知道要查询哪个月份的情况下,将数据保持为规范化形式,然后在您的应用程序/表示层中进行数据透视。

SELECT
  type,
  month,
  SUM(qty)   AS qty
FROM
(
    SELECT * FROM table1
    UNION ALL
    SELECT * FROM table2
)
   unified_table
GROUP BY
    type,
    month

如果每个 table 中有不同的字段,请在 UNION ALL 中更具体一些。

(
    SELECT type, month, qty FROM table1
    UNION ALL
    SELECT type, month, qty FROM table2
)