我有一些表具有不同的列和值,但希望将它们合并/结合在一起
表格如下:
A
Datetime ID A B C D
1/1/2018 00:00:00 1 11 22 33 44
2/1/2018 00:00:00 1 11 22 33 44
3/1/2018 00:00:00 1 11 22 33 44
4/1/2018 00:00:00 1 11 22 33 44
5/1/2018 00:00:00 1 11 22 33 44
6/1/2018 00:00:00 1 11 22 33 44
B
Datetime ID E F G H
1/2/2018 00:00:00 2 101 212 313 414
2/2/2018 00:00:00 2 101 212 313 441
3/2/2018 00:00:00 2 101 212 313 414
4/2/2018 00:00:00 2 101 212 313 414
5/2/2018 00:00:00 2 101 212 313 441
6/2/2018 00:00:00 2 101 212 313 441
C
Datetime ID I J K L
1/3/2018 00:00:00 3 11 22 33 44
2/3/2018 00:00:00 3 11 22 33 44
3/3/2018 00:00:00 3 11 22 33 44
4/3/2018 00:00:00 3 11 22 33 44
5/3/2018 00:00:00 3 11 22 33 44
6/3/2018 00:00:00 3 11 22 33 44
我希望我的决赛桌看起来像这样:
决赛A
Datetime ID A B C D
1/1/2018 00:00:00 1 11 22 33 44
2/1/2018 00:00:00 1 11 22 33 44
3/1/2018 00:00:00 1 11 22 33 44
4/1/2018 00:00:00 1 11 22 33 44
5/1/2018 00:00:00 1 11 22 33 44
6/1/2018 00:00:00 1 11 22 33 44
B
Datetime ID E F G H
1/2/2018 00:00:00 2 101 212 313 414
2/2/2018 00:00:00 2 101 212 313 441
3/2/2018 00:00:00 2 101 212 313 414
4/2/2018 00:00:00 2 101 212 313 414
5/2/2018 00:00:00 2 101 212 313 441
6/2/2018 00:00:00 2 101 212 313 441
C
Datetime ID I J K L
1/3/2018 00:00:00 3 11 22 33 44
2/3/2018 00:00:00 3 11 22 33 44
3/3/2018 00:00:00 3 11 22 33 44
4/3/2018 00:00:00 3 11 22 33 44
5/3/2018 00:00:00 3 11 22 33 44
6/3/2018 00:00:00 3 11 22 33 44
最终
Datetime ID A B C D E F G H I J K L
1/1/2018 00:00:00 1 11 22 33 44
2/1/2018 00:00:00 1 11 22 33 44
3/1/2018 00:00:00 1 11 22 33 44
4/1/2018 00:00:00 1 11 22 33 44
5/1/2018 00:00:00 1 11 22 33 44
6/1/2018 00:00:00 1 11 22 33 44
1/2/2018 00:00:00 2 101 212 313 414
2/2/2018 00:00:00 2 101 212 313 441
3/2/2018 00:00:00 2 101 212 313 414
4/2/2018 00:00:00 2 101 212 313 414
5/2/2018 00:00:00 2 101 212 313 441
6/2/2018 00:00:00 2 101 212 313 441
1/3/2018 00:00:00 3 11 22 33 44
2/3/2018 00:00:00 3 11 22 33 44
3/3/2018 00:00:00 3 11 22 33 44
4/3/2018 00:00:00 3 11 22 33 44
5/3/2018 00:00:00 3 11 22 33 44
6/3/2018 00:00:00 3 11 22 33 44
我想不出逻辑,因为每个表都有自己的列,但我希望按照上面的说明进行合并。
寻求建议。
答案 0 :(得分:1)
我们可以通过联合查询来做到这一点:
SELECT Datetime, ID, A, B, C, D, NULL AS E, NULL AS F, NULL AS G, NULL AS H,
NULL AS I, NULL AS J, NULL AS K, NULL AS L
FROM A
UNION ALL
SELECT Datetime, ID, NULL, NULL, NULL, NULL, E, F, G, H, NULL, NULL, NULL, NULL
FROM B
UNION ALL
SELECT Datetime, ID, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, I, J, K, L
FROM C
ORDER BY
ID, Datetime;
注意:不需要 重复列别名,该列别名出现在后续选择中的联合查询的第一个选择中。实际上,此类别名只会被忽略。
由于易于设置,因此在SQL Server中任意给出了演示,但是查询应该在几乎所有数据库上运行。
答案 1 :(得分:0)
SELECT Datetime,ID,A,B,C,D,NULL AS E,NULL AS F,NULL AS G,NULL AS H,NULL AS I,NULL AS J,NULL AS K,NULL AS L
FROM TableA
UNION ALL
SELECT Datetime,ID,NULL AS A,NULL AS B,NULL AS C,NULL AS D, E,F,G,H,NULL AS I,NULL AS J,NULL AS K,NULL AS L
FROM TableB
UNION ALL
SELECT Datetime,ID,NULL AS A,NULL AS B,NULL AS C,NULL AS D,NULL AS AS E,NULL AS AS F,NULL AS G,NULL AS H,I,J,K,L
FROM TableC
答案 2 :(得分:0)
使用UNION ALL:
select Datetime,ID, A, B, C, D, null as E, null as F, null as G, null as H, null as I, null as J, null as K, null as L from tableA
union all
select Datetime,ID, null, null , null , null , E, F, G, H, null , null , null , null from tableB
Union all
select Datetime,ID, null , null , null , null , null , null , null , H, I, J, K, L from tableC