2011-03-30 1 views
0

複数のテーブルを結合する複雑なSQLクエリがあります。ここで骨抜きバージョン...sprocなしでExcelから複数テーブルSQLクエリを呼び出す

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のスプレッドシートからこのクエリを呼び出すしたいと思いますが、私は照会てるデータベースにSPROCを追加する権限がありません。また、スプレッドシートからAreaPathとIterationPathの値を設定できるようにしたいと思います。

Excelからこのクエリを呼び出すことはできますか?そうでない場合、このクエリを実行してクエリの出力をExcelにインポートするにはどうすればよいでしょうか?

答えて

1

クエリが実際に単一のクエリ(複数のSQL文ではなく)であれば、あなたがトリックを再生することができます:

右のデータ・ソースを指すとの必要な数が含まれ、通常のExcelのクエリテーブルを作成します。無関係なもの(select 1,2,3,4,5 from existing_table where existing_field = [param1] and existing_field = [param2]など)を選択します。
これで、2つのパラメータを持つテンプレートクエリが作成されました。これらをシート上の細胞と関連付けます。今

、テンプレートクエリ結果内のセルを選択して、このコマンドを実行します。sql text

activecell.querytable.commandtext = "sql text" 

?で偶然に交換してください。 declareまたは変数、ちょうどselectです。パラメータは名前ではなく、位置によって参照されます。つまり、クエリで同じパラメータが複数回使用されている場合、パラメータは異なるため、テンプレートに個別に追加する必要があります。

パラメータを受け入れると同時に、「グラフィカルに表現できない」複雑なクエリを実行する動作中のクエリテーブルがあります。

要点は、Excelはパラメータを使用して複雑なクエリを実行できます。それはそれに対応できないMicrosoft Queryです。

このクエリテーブルをMicrosoft Queryで編集しようとすると、そのクエリテーブルが破損することに注意してください。あなたは、あなたがそれを不注意に行う場合に備えて、あなたのSQLを別の場所に保存したいかもしれません。

+0

それは私のためにうまくいった。ありがとう! – user467384

0

はい、Excelからクエリを呼び出すことができます。いくつかの方法がありますが、ADOとExcelを検索して構文を調べます。値がある場所にセルを置いて読み込み、パラメータとして直接または動的SQLを使用してセルを追加するのは簡単です。

Here's an article

関連する問題