组合具有不同列数的表,其中一些具有相同的标题名称

时间:2016-07-05 18:54:36

标签: sql excel powerpivot powerquery consolidation

您好。所以我正在使用PowerPivot的查询编辑器。我在PowerPivot窗口中有两个表,我正在使用表属性选项卡中的查询编辑器进行编辑。这些表具有不同数量的列,它们彼此共有一些列,每个列包含唯一列。它们共享的列具有相同的标题名称。我想在原始表中添加新列的同时将一个表堆叠在另一个表上。

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$];

我看到一个使用NULL AS的帖子,以便补偿丢失的列,但是一旦我添加它,我得到“没有检测到列”错误消息。实际上,我正在使用数十张表,列数从15到70以上,行数从300到350k,这就是我使用PowerPivot的原因。

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

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

2 个答案:

答案 0 :(得分:1)

我会使用 Power Query 加载项。在Excel 2016中,Power Query包含在数据功能区中 Get&amp;变换

连接到您的数据库并选择2个表。将加载到默认设置更改为仅创建连接,然后取消选中将此数据添加到数据模型。这将创建2个查询。

然后通过右键单击工作簿查询窗格中的第一个查询并选择附加来创建第三个查询。选择第二个表,你可能已经完成了。查询编辑器将预览结果,您可以根据需要删除或重命名列。

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

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

答案 1 :(得分:0)

您应该从第二个选择中删除别名

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