SQL 联合按格式化字符串分组
SQL Union grouped by formatted strings
我正在尝试对 2 个不同表格中的 2 列求和,并按格式化字符串进行分组和排序。
模式要点是这样的:
Table A:
* Created At
* Amount Charged
Table B:
* Created At
* Cash Amount
请注意,它们共享一个名为 "created at" 的列名,但对于我要总结的内容具有不同的列名。
我想要一个结果,表示 1 月份,Table A 收费金额 + Table B 现金金额的总和为 x,2 月份,依此类推.
这是我格式化日期的方式:
str_to_date(concat(date_format(created_at
, '%Y-%m'), '-01')
您可以使用 UNION ALL
:
SELECT str_to_date(concat(date_format(created_at, '%Y-%m'), '-01'), SUM(sub.c)
FROM (SELECT created_at, Amount AS c
FROM tabA
UNION ALL
SELECT created_at, Cash
FROM tabB) sub
GROUP BY str_to_date(concat(date_format(created_at, '%Y-%m'), '-01');
我会替换str_to_date(concat(date_format(created_at, '%Y-%m'), '-01')
EXTRACT(YEAR_MONTH FROM created_at)
我正在尝试对 2 个不同表格中的 2 列求和,并按格式化字符串进行分组和排序。
模式要点是这样的:
Table A:
* Created At
* Amount Charged
Table B:
* Created At
* Cash Amount
请注意,它们共享一个名为 "created at" 的列名,但对于我要总结的内容具有不同的列名。
我想要一个结果,表示 1 月份,Table A 收费金额 + Table B 现金金额的总和为 x,2 月份,依此类推.
这是我格式化日期的方式:
str_to_date(concat(date_format(created_at
, '%Y-%m'), '-01')
您可以使用 UNION ALL
:
SELECT str_to_date(concat(date_format(created_at, '%Y-%m'), '-01'), SUM(sub.c)
FROM (SELECT created_at, Amount AS c
FROM tabA
UNION ALL
SELECT created_at, Cash
FROM tabB) sub
GROUP BY str_to_date(concat(date_format(created_at, '%Y-%m'), '-01');
我会替换str_to_date(concat(date_format(created_at, '%Y-%m'), '-01')
EXTRACT(YEAR_MONTH FROM created_at)