DQL/SQL 到 Excel - 获取电子表格中多个 SELECT 语句的结果

DQL/SQL 到 Excel - 获取电子表格中多个 SELECT 语句的结果

我编写了包含几个独立 SELECT 语句的 T-SQL 查询。每个 SELECT 语句返回不同数量的列并代表不同的属性/特征,因此我不想将它们全部合并到一个 SELECT/一个结果中。

为了直观地显示我的查询,让我提供简化的示例:

DECLARE @myNumber bigint;     
SET @myNumber = 5426;

SELECT 'This' as col1, 'is' as col2, 'my' as col3, 'number:' as col4, @myNumber as col5

SELECT 'and' as column1, 'the half' as column2, @myNumber/2 as column3

SELECT * FROM
       (SELECT 'some' as column1, 'union' as column2
             UNION ALL
       SELECT 'second' as column1, 'case' as column2
       ) as someData

查询执行后,它在 SQL Server Management Studio 中的样子如下:

示例查询执行的结果

现在,我想在 Excel 中获得完全相同的查询结果。我转到数据 --> 来自其他来源 --> 来自 SQL Server。在“导入数据”窗口中,我单击属性并插入上述查询:

设置 - SQL Server 连接

不幸的是,Excel 中只显示第一个 SELECT 查询结果。

Excel 中仅获取第一个查询结果

是否可以在 Excel 中检索所有查询结果?

答案1

Excel 不支持在一个连接中创建多个 SQL 语句。

作为一种解决方法,您可以使用模拟所需功能的宏。

评论中提出的其他问题:

  • Microsoft 是否计划在 Excel 的未来版本中添加此功能:我不是 MS 的员工,也不知道他们的计划。
    但是,这似乎不是许多用户需要的功能,我不希望开发专注于此。
  • 其他类似工具(例如 open office)是否支持多条 SQL 语句?我不知道那些工具。

答案2

您可以为此使用多个 UNION,下面是一些示例 SQL 查询代码行,将帮助您解决问题。

SELECT Distinct value
From ((Select field1 as value from table1 where data = value) union all
      (Select field2 from table1 where data = value) union all
      (Select field1 from table2 where data = value) union all
      (Select field2 from table2 where data = value)
     ) t

或者应该像这样,

SELECT DISTINCT a.Field
FROM (
    SELECT  b.Field
    FROM    Table1 tab
    CROSS APPLY ( 
        SELECT c.Field1 AS Field
        UNION ALL 
        SELECT c.Field2 AS Field
    ) AS X
    UNION ALL
    SELECT  b.Field
    FROM    Table2 tab
    CROSS APPLY (
        SELECT c.Field1 AS Field
        UNION ALL 
        SELECT c.Field2 AS Field
    ) AS x
) y

第一个简单易用,希望对您有所帮助。

相关内容