cte FULL OUTER JOIN MYSQL

cte FULL OUTER JOIN MYSQL

我有这个table(称为试用版):

a, id1, year1, year2, val1, val2
1, A01, 2015, 2025, 17.20, 18.30
2, A02, 2014, 2024, 13.20,  7.80
3, A04, 2013, 2024, 10.00, 10.00
4, A03, 2024, 2014, 12.20,  8.80
5, A05, 2024, 2014,  0.00,  6.00

'year1' 引用列 'val1' 中的值,'year2' 引用列 'val2' 中的值。

我想获得按年份分组的所有值的总和。

所以我希望看到这样的结果:

Year    Value per year
2013    10.0
2014    28.0
2015    17.2
2024    30.0
2025    18.3

我使用自连接设置了一个通用的 table 表达式 (cte),如下所示:

SELECT  t1.year1, t2.year2, t1.val1, t2.val2,  t1.val1+t2.val2 AS val_tot FROM trial t1 FULL OUTER JOIN trial t2 ON t1.year1 = t2.year2  GROUP BY t1.year1;

(添加前四个输出列是为了清楚地了解正在发生的事情)

输出为:

year1   year2   val1    val2    val_tot
2013    NULL    10.0    NULL    NULL
NULL    2025    NULL    18.3    NULL
2015    NULL    17.2    NULL    NULL
2014    2014    13.2     6.0    19.2
2024    2024     0.0     7.8     7.8

输出显然是不正确的。

我已经尝试修改上面的 SELECT 语句,例如更改 JOIN 类型,更改 GROUP BY 子句或将其删除,以及添加 WHERE 子句,但没有成功。 我用谷歌搜索并阅读了一些网站,但都没有成功,因为我找不到类似的例子,尽管肯定有很多相同的问题。

非常感谢您的帮助。

如果我理解,你想先逆轴再聚合。一种方法是:

select year, sum(val)
from ((select year1 as year, val1 as val from trial t) union all
      (select year2, val2 from trial t)
     ) t
group by year
order by year;