2011-03-30 8 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] 

입니다,하지만 난 쿼리하고있어 데이터베이스에 sproc에 추가 할 수있는 권한이 없습니다. 또한 스프레드 시트에서 AreaPath 및 IterationPath 값을 설정할 수 있기를 바랍니다.

Excel에서이 쿼리를 호출 할 수 있습니까? 그렇지 않은 경우이 쿼리를 실행하고 쿼리 결과를 Excel로 가져 오는 좋은 방법은 무엇입니까?

답변

1

쿼리가 (여러 SQL 문에 반대) 단일 쿼리 참으로 경우에, 당신은 트릭 재생할 수 있습니다 :

을 올바른 데이터 소스를 가리키는 및 필요한 번호를 포함하는 일반 엑셀 쿼리 테이블 만들기 매개 변수와 무관 한 것을 선택합니다 (예 : select 1,2,3,4,5 from existing_table where existing_field = [param1] and existing_field = [param2]).
이제 두 개의 매개 변수가있는 템플릿 쿼리가 있습니다. 시트에있는 셀과 이들을 연관 시키십시오.

지금, 템플릿 쿼리 결과 내에서 셀을 선택하고 실행 명령 :

activecell.querytable.commandtext = "sql text" 

sql text에서 ?으로 paramters를 교체합니다. declare 또는 변수는 단지 select입니다. 매개 변수는 이름이 아닌 위치에 의해 참조됩니다. 즉, 동일한 매개 변수가 쿼리에서 여러 번 사용되면 매개 변수가 다르기 때문에 템플릿에 별도로 추가해야합니다.

매개 변수를 허용하고 동시에 "그래픽으로 표현할 수없는"복잡한 쿼리를 실행하는 작업 쿼리 테이블을 알고 있습니다.

요점은 Excel이 매개 변수가있는 복잡한 쿼리를 실행할 수 있다는 것입니다. Microsoft Query는이를 처리 할 수 ​​없습니다.

Microsoft Query로이 쿼리 테이블을 편집하면 쿼리가 손상 될 수 있습니다. 당신은 당신이 그것을 absentmededly 할 경우에 대비하여 어딘가에 SQL을 저장하고 싶을지도 모른다.

+0

저에게는 큰 도움이되었습니다. 감사! – user467384

0

예, Excel에서 쿼리를 호출 할 수 있습니다. 여러 가지 다른 방법이 있습니다. ADO와 Excel에서 구문을 확인합니다. 값이있는 셀을 읽고, 읽거나 매개 변수로 직접 추가하거나 동적 SQL을 사용하여 쉽게 추가 할 수 있습니다.

Here's an article