2014-10-20 2 views
2

단일 행의 간단한 쿼리 결과를 단일 행의 다른 동적 쿼리에 병합하려고 하루 종일 노력했습니다.SQL의 고유 한 동적 쿼리에 쿼리 결과 결합

나는 두 열의 단일 행 반환 복잡한 SELECT의 결과로 쿼리가 : 다음과 같이 간략하게 내가 뭘 찾았는지 설명하기 위해 것은 내가 다른 동적 쿼리를 다음

HistoryDate |TotalMarketValue 
2014-08-31 1195687865.20 

을하는 나는 이런 식으로 뭔가를 실행 내가 반환되는 이름이나 열 번호를 모르는 열, 동적 수있는 단일 행을 반환

exec sp_executesql @query 

그래서 기본적으로 내가해야 할 일 같은 것입니다 :

SELECT HistoryDate, SUM(TotalMarketValue) FROM MyComplexTable, exec sp_executesql @query 

분명히 위 구문은 exec 부분이 CROSS JOIN을 허용하지 않기 때문에 잘못되었습니다. 임시 테이블에 동적 쿼리 결과를 채우는 것과 같은 여러 가지 다른 방법을 시도했지만 다시 열 개수를 지정하지 않고 테이블을 만들 수 없습니다. 나는 그 점을 놓치고있다.

누군가 내가 병합 된 쿼리의 일부로 동적 쿼리를 어떻게 얻을 수 있는지 알려주실 수 있습니까?

+2

'@ query'so를 변경하여 'sp_executesql'하기 전에 두 개의 추가 열을 추가 할 수 있습니까? – StuartLC

+0

대단히 감사합니다 @StuartLC, 왜 내가 하루 종일 그 각도를 알아낼 수 없었는지 궁금해. 분명히 "TotalMarketValue"는 SUM (함수)로 묶여 있으며 오류가 발생했습니다. 그럼에도 불구하고 당신의 팁은 GROUP BY 절에 동적 칼럼을 추가함으로써 해결책으로 나아갔습니다. 다시 한 번 감사드립니다 ...! :) – sm2mafaz

답변

0

테이블 변수를 사용하여 쿼리 결과를 테이블 변수에 삽입 할 수 있습니다. 그런 다음 테이블 변수에서 데이터를 선택하고 조합으로 select 문을 선택하십시오.

DECLARE @query NVARCHAR(MAX) 
SET @query = 'SELECT HistoryDate, SUM(TotalMarketValue)' 

DECLARE @Results TABLE(cola DATETIME, colb DECIMAL(18,2)) 

INSERT INTO @Results 
exec sp_executesql @query 

SELECT * FROM @Results 
UNION 
SELECT HistoryDate, SUM(TotalMarketValue)