我编写了包含几个独立 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。在“导入数据”窗口中,我单击属性并插入上述查询:
不幸的是,Excel 中只显示第一个 SELECT 查询结果。
是否可以在 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
第一个简单易用,希望对您有所帮助。