Sql 如何联接表和每月总和
我有两张桌子,T1和T2就是这样设计的 T1: T2: 我想展示这样的东西Sql 如何联接表和每月总和,sql,aggregate-functions,firebird,Sql,Aggregate Functions,Firebird,我有两张桌子,T1和T2就是这样设计的 T1: T2: 我想展示这样的东西 Month NUM_VALUE_1 NUM_VALUE_2 NUM_VALUE_3 ----- ----------- ----------- ----------- 01 40000.00 19000.00 8500.00 02 850
Month NUM_VALUE_1 NUM_VALUE_2 NUM_VALUE_3
----- ----------- ----------- -----------
01 40000.00 19000.00 8500.00
02 8500.00 12000.00 46800.00
03 21200.00 19000.00 0.00
04 0.00 0.00 20000.00
05 0.00 0.00 0.00
06 0.00 0.00 0.00
07 47800.00 21000.00 0.00
08 0.00 0.00 0.00
09 0.00 0.00 0.00
10 0.00 0.00 0.00
11 0.00 0.00 0.00
12 0.00 0.00 0.00
ie通过按日期月份分组将两个表连接起来,每个月我必须将NUM_VALUE_1、NUM_VALUE_2(从T1开始)和NUM_VALUE_3(从T2开始)相加。使用该函数使月份过期,例如:
select m, Sum(Num_Value_1), Sum(Num_Value_2), Sum(Num_Value_3)
from (
select EXTRACT(MONTH from DATE_1) m, NUM_VALUE_1, NUM_VALUE_2, 0 as NUM_VALUE_3 from T1
union all
select EXTRACT(MONTH from DATE_2) m, 0 as NUM_VALUE_1, 0 as NUM_VALUE_2, NUM_VALUE_3 from T2
) GROUP BY m
使用该函数可使月份过期,例如:
select m, Sum(Num_Value_1), Sum(Num_Value_2), Sum(Num_Value_3)
from (
select EXTRACT(MONTH from DATE_1) m, NUM_VALUE_1, NUM_VALUE_2, 0 as NUM_VALUE_3 from T1
union all
select EXTRACT(MONTH from DATE_2) m, 0 as NUM_VALUE_1, 0 as NUM_VALUE_2, NUM_VALUE_3 from T2
) GROUP BY m
我不确定Firebird支持的所有语法,但希望它能起作用:
SELECT
Months.Month,
SUM(T1.NUM_VALUE_1) AS Total_Num_Value_1,
SUM(T1.NUM_VALUE_2) AS Total_Num_Value_2,
SUM(T1.NUM_VALUE_3) AS Total_Num_Value_3
FROM
(SELECT 1 AS Month UNION SELECT 2 AS Month UNION SELECT 3 AS Month UNION
SELECT 4 AS Month UNION SELECT 5 AS Month UNION SELECT 6 AS Month UNION
SELECT 7 AS Month UNION SELECT 8 AS Month UNION SELECT 9 AS Month UNION
SELECT 10 AS Month UNION SELECT 11 AS Month UNION SELECT 12 AS Month UNION) Months
LEFT OUTER JOIN T1 ON EXTRACT(MONTH FROM T1.DATE_1) = Months.Month
LEFT OUTER JOIN T2 ON EXTRACT(MONTH FROM T2.DATE_2) = Months.Month
GROUP BY
Months.Month
我不确定Firebird支持的所有语法,但希望它能起作用:
SELECT
Months.Month,
SUM(T1.NUM_VALUE_1) AS Total_Num_Value_1,
SUM(T1.NUM_VALUE_2) AS Total_Num_Value_2,
SUM(T1.NUM_VALUE_3) AS Total_Num_Value_3
FROM
(SELECT 1 AS Month UNION SELECT 2 AS Month UNION SELECT 3 AS Month UNION
SELECT 4 AS Month UNION SELECT 5 AS Month UNION SELECT 6 AS Month UNION
SELECT 7 AS Month UNION SELECT 8 AS Month UNION SELECT 9 AS Month UNION
SELECT 10 AS Month UNION SELECT 11 AS Month UNION SELECT 12 AS Month UNION) Months
LEFT OUTER JOIN T1 ON EXTRACT(MONTH FROM T1.DATE_1) = Months.Month
LEFT OUTER JOIN T2 ON EXTRACT(MONTH FROM T2.DATE_2) = Months.Month
GROUP BY
Months.Month
是的,这对我来说是最好的答案!这正是我需要的!谢谢@MohamedBenattou如果是这样的话,你应该在答案前面打勾来接受答案。是的,这是我最好的答案!这正是我需要的!谢谢@MohamedBenattou如果是这样,你应该在答案前勾选复选标记来接受答案。