试图让我的头脑围绕如何编写此SQL查询。
表X具有3列:Year
,ID
,Value
,看起来像这样
Year | ID | Value
2013 101 10000
2014 101 11000
2015 101 12000
2013 102 7000
2014 102 8000
2015 102 9000
并且表Y具有3列:
ID
,Curr_Year_Val
,Next_Year_Val
,看起来像这样ID | Curr_Year_Val | Next_Year_Val
101 13000 14000
102 6000 5000
我想编写一条select语句将这两个表连接在一起,但是要保持表X的布局,如下所示:
Year | ID | Value
2013 101 10000
2014 101 11000
2015 101 12000
Curr_Year_Val 101 13000
Next_Year_Val 101 14000
有没有办法达到这个结果?我已经弄清楚了如何只做左联接以将表y的列添加到表x,而是宁愿将表y的列取消透视表到表x的行。在此先感谢您-似乎应该很简单,我已经搜寻了几个小时,但是我可能没有在搜索中使用正确的术语。
谢谢!
最佳答案
听起来您应该使用union all
:
select year, id, value from x
union all
select 'curr_year_val', id, curr_year_val from y
union all
select 'next_year_val', id, next_year_val from y
order by 2, 1
SQL Fiddle Demo
顺便说一句,使用
union
时,其他数据库将要求您所有列的数据类型相同。但是,这对于mysql
是有效的。关于mysql - MySQL将表y中的2列连接到表x的行中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37145565/