组合具有不同列数的表,一些表具有相同的 header 名称

Combining tables with different number of columns, some in common with same header names

您好。所以我正在使用 PowerPivot 的查询编辑器。我在 PowerPivot window 中有两个 table,我正在使用 table 属性选项卡中的查询编辑器对其进行编辑。 table 有不同数量的列,有些列彼此共有,每列都包含唯一的列。他们共享的列具有相同的 header 名称。我想将一个 table 堆叠在另一个之上,同时向原始 table.

添加新列

For example:<p></p>
<table><i>TableA</i>
  <th>Col1</th><th>Col2</th><th>Col3</th>
  <tr><td>A</td><td>B</td><td>C</td>
    </tr>
  </table><p></p><table><i>TableB</i>
<th>Col1</th><th>Col2</th><th>Col4</th>
  <tr><td>D</td><td>E</td><td>F</td>
    </tr>
  </table><p></p>
<table><i>Combined</i>
  <th>Col1</th><th>Col2</th><th>Col3</th><th>Col4</th>
  <tr><td>A</td><td>B</td><td>C</td><td>-</td>
    </tr>
  <tr><td>D</td><td>E</td><td>-</td><td>F</td>
    </tr>
  <tr>
    
  </table>
<p></p>

示例代码:

SELECT tableA.col1, tableA.col2, tableA.col3, NULL AS col4
FROM [tableA$]
UNION
SELECT tableB.col1, tableB.col2, NULL AS col3, tableB.col4
FROM [tableB$];

我看到一个 post 使用 NULL AS 来补偿缺失的列,但是一旦我添加它,我就会收到“未检测到任何列”的错误消息。实际上,我正在处理数十张工作表,列数从 15 到 70 多个,行数从 300 到 350k,这就是我要使用 PowerPivot 的原因。

我通过创建与工作表的连接将我的工作表导入到 PowerPivot。

P.S。我是 PowerPivot 和查询编辑器的新手。提前感谢您的帮助。

您应该删除第二个 select

的别名
SELECT tableA.col1, tableA.col2, tableA.col3, NULL AS col4
FROM [tableA$]
UNION
SELECT tableB.col1, tableB.col2, NULL , tableB.col4
FROM [tableB$];

我会为此使用 Power Query 加载项。在 Excel 2016 年,Power Query 作为 Get & Transform.

包含在数据功能区中

连接到您的数据库并选择 2 table。将 Load To 默认值更改为 Only Create Connection,并取消选中 Add this data to the Data Model。这将创建 2 个查询。

然后通过右键单击 Workbook Queries 窗格中的第一个查询并选择 Append 创建第三个查询。 Select 第二个 table 你可能就快完成了。查询编辑器将预览结果,您可以根据需要删除或重命名列。

对于第 3 个查询,将 加载到 设置更改为 仅创建连接,并选中 添加此数据到数据模型

除了无需编写代码和维护复杂的 SQL,Power Query 还为您的数据模型添加了一层绝缘层。您可以自由地包含来自其他来源的数据,例如文件、Web 服务 - 您不再局限于单个连接。