将多个表组合成单独的行和列

Posted

技术标签:

【中文标题】将多个表组合成单独的行和列【英文标题】:combine multiple tables into separate rows and columns 【发布时间】:2018-01-17 11:01:19 【问题描述】:

我在 SQLite 中合并表时遇到问题。假设我在 SQLite 数据库中有 3 个表。每个表有 10 列。

所有 3 个表只有一个公共列是“时间”,它以一串数字给出。我想合并所有三个表,并保留公共时间列,所以我最终会得到一个“时间”列加上 27 个其他列,这些列都是不同的。然后我想按时间列按合并表排序。

问题是每个表中的时间值是完全随机且不同的,因此我无法根据共同的时间值加入。因此,合并表中的行数将等于表 1 中的 no.rows + 表 2 中的 no.rows + 表 3 中的 no.rows。我考虑过 INNER JOINS 等,但这不适合由于没有共同的价值观……

非常感谢您的任何建议!

已编辑

表 1 时间,第 1 列 100012, 蓝色 100015, 红色 100018, 黄色

表 2 时间,第 2 栏 12414, 沙发 12416,椅子

表 3 时间,第 3 栏 159801, 鸟 157981, 松鼠 179719,小熊

期望的输出: 时间,第 1 列,第 2 列,第 3 列 12414,NULL,沙发,NULL 12416,NULL,椅子,NULL 100012,蓝色,NULL,NULL 100015,红色,NULL,NULL 100018, 黄色, NULL, NULL 157981,NULL,NULL,松鼠 179719,NULL,NULL,熊

查询: 从表 1 中选择 * (某种加入) * 来自表 2 (某种加入) *来自表 3 按时间排序;

【问题讨论】:

请添加示例数据、预期输出和您遇到的查询 我添加了一些示例数据 - 但我不相信它真的增加了任何价值。 @CJW 您发布的不是示例数据。发布您的表模式(即 CREATE TABLE 语句)、示例数据(即 INSERT INTO 语句)和实际预期结果。不是“类似”。 我使用的数据是公司数据,我不想透露。 @CJW 也不发布所有 27 列。您应该能够用例如 2 列和每个表的 time 来解释您想要什么。请务必说明您希望在结果中获得哪些 time 值,以及您希望如何组合以毫秒为单位的行 【参考方案1】:

连接将多个表中的值组合到同一行中。但是你想要单独的行;这可以通过compound query 来完成:

SELECT Time, Column1, NULL AS Column2, NULL AS Column3 FROM Table1
UNION ALL
SELECT Time, NULL,    Column2,         NULL            FROM Table2
UNION ALL
SELECT Time, NULL,    NULL,            Column3         FROM Table3
ORDER BY Time;

【讨论】:

您好 CL,感谢您对此的回复。这行得通,但是问题是列标题现在是 1. Time, 2. Column 1, 3. NULL, 3. NULL 有没有办法重命名列,以便我可以拥有 1. Time 2. Column 1; 3.第2栏; 4. 第 3 列? 列标题由AS子句决定。 我遇到的问题是,当您尝试更改列标题时(例如 Price AS Column2,Length AS Column 3)返回一个错误,指出 Table1 中不存在“Price”? IE。似乎无法将列重命名为我想要的任何内容。 为什么将NULL 替换为Price?您想替换别名。

以上是关于将多个表组合成单独的行和列的主要内容,如果未能解决你的问题,请参考以下文章

TSQL:如何将单列的行加入/组合成 CSV 列表

ADO SQL属性扩展————多表组合成新的更完整的表

有没有办法将多个数据框组合成一个 xlsx 工作表和多个数据框跨单独的工作表

通过 Power Query 在 Excel 中的 Smartsheet 数据

将多个分组查询组合成单个查询

如何在pandas中将多个相同类别的行组合成一个?