sql - 我可以合并或加入这些表吗?
问题描述
我有一些表具有不同的列和值,但想将它们合并/连接在一起
表格如下所示:
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
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
我想不出每个表都有自己的列的逻辑,但我希望它按照上面的方式合并。
寻求您的建议。
解决方案
我们可以通过联合查询来做到这一点:
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 中任意给出了演示,但查询几乎可以在任何数据库上运行。
推荐阅读
- powershell - 另一个具有相同属性 identifierUris 值的对象已经存在
- node.js - 是否有必要验证加密的密码服务器端?
- angular - Angular 5 'Content-Type':'multipart/form-data' 被重置为 'application/json'
- python - 在张量流中找到二维张量分组的平均值?
- python - OrientDB:在 pyorient 中为两个顶点类创建边
- python - 仅在第一个脚本完成后执行第二个 python 脚本
- github-pages - 将 Hugo 加载到 GitHub 页面
- c# - unityplayer 中的地形纹理模糊
- php - 在 codeigniter PHP 中使用数组检查索引键
- math - 16bit product throughoutput可以在没有具体说明的情况下翻倍吗?