首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无需存储过程即可从Excel中调用多表SQL查询

无需存储过程即可从Excel中调用多表SQL查询
EN

Stack Overflow用户
提问于 2011-03-31 07:13:42
回答 2查看 2.2K关注 0票数 0

我有一个连接多个表的复杂SQL查询。这是一个冲淡版本..。

代码语言:javascript
复制
DECLARE @AreaPath varchar(128)
DECLARE @IterationPath varchar(256)

SELECT 
  [Scenario Id],
  scenarios.[Feature Id],
  [Task Id],
  [AreaPath],
  [IterationPath]
FROM
    (SELECT 
      [SourceWorkItemID] as [Scenario Id],
      [TargetWorkItemID] as [Feature Id],
      [LinkName]
    FROM [TFS_Warehouse].[dbo].[FactWorkItemLinkHistory] as hist
    JOIN TFS_Warehouse.dbo.DimWorkItemLinkType as links
      ON hist.WorkItemLinkTypeSK = links.WorkItemLinkTypeSK
    Where [LinkName] = 'Feature Link') as scenarios
LEFT OUTER JOIN
    (SELECT 
      [SourceWorkItemID] as [Feature Id],
      [TargetWorkItemID] as [Task Id],
      [LinkName]
    FROM [TFS_Warehouse].[dbo].[FactWorkItemLinkHistory] as hist
    JOIN TFS_Warehouse.dbo.DimWorkItemLinkType as links
      ON hist.WorkItemLinkTypeSK = links.WorkItemLinkTypeSK
    Where [LinkName] = 'Child') as tasks
  ON scenarios.[Feature Id] = tasks.[Feature Id]
LEFT OUTER JOIN TFS_Warehouse.dbo.CurrentWorkItemView as workItem
  ON tasks.[Task Id] = workItem.System_Id
WHERE [IterationPath] = @IterationPath
  AND [AreaPath] = @AreaPath
ORDER BY [Scenario Id], scenarios.[Feature Id], tasks.[Task Id]

我想从excel电子表格中调用此查询,但我没有向要查询的数据库添加存储过程的权限。我还希望能够从电子表格中设置AreaPath和IterationPath的值。

是否可以从Excel调用此查询?如果不是,执行此查询并将查询的输出导入Excel的好方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-31 08:16:57

如果您的查询确实是一个查询(而不是多个SQL语句),那么您可以玩一个小把戏:

创建一个普通的Excel查询表,该查询表指向正确的数据源,并包含所需数量的参数,但选择了一些不相关的内容(例如select 1,2,3,4,5 from existing_table where existing_field = [param1] and existing_field = [param2])。

现在,您有了一个带有两个参数的模板查询。将这些与工作表上的单元格相关联。

现在,在模板查询结果中选择一个单元格,并执行以下命令:

代码语言:javascript
复制
activecell.querytable.commandtext = "sql text"

sql text中,用?替换参数。没有declare或变量,只有一个select。参数将按位置引用,而不是按名称引用。这意味着,如果同一参数在查询中多次使用,则它们是不同的参数,必须单独添加到模板中。

您知道,有一个可以工作的查询表,它可以接受参数,同时执行一个“不能用图形表示”的复杂查询。

关键是,Excel可以运行带参数的复杂查询,而Microsoft query无法处理它。

请注意,尝试使用Microsoft query编辑此查询表将会损坏它。你可能想把你的SQL保存在别的地方,以防你走神了。

票数 1
EN

Stack Overflow用户

发布于 2011-03-31 07:17:46

可以,您可以从Excel调用查询。有许多不同的方法,我会查找ADO和Excel来获得语法。直接或使用动态SQL,在值所在的单元格中读取它们,并将它们作为参数添加,这将很容易。

Here's an article帮助您入门。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5493590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档