열 이름이 동적으로 생성되는 피벗 테이블 요소에 쿼리를 쓰고 있습니다.SQL Azure에서 임시 테이블 사용
SET @query = N'SELECT STUDENT_ID, ROLL_NO, TITLE, STUDENT_NAME, EXAM_NAME, '+
@cols +
' INTO ##FINAL
FROM
(
SELECT *
FROM #AVERAGES
UNION
SELECT *
FROM #MARKS
UNION
SELECT *
FROM #GRACEMARKS
UNION
SELECT *
FROM #TOTAL
) p
PIVOT
(
MAX([MARKS])
FOR SUBJECT_ID IN
('+
@cols +')
) AS FINAL
ORDER BY STUDENT_ID ASC, DISPLAYORDER ASC, EXAM_NAME ASC;'
EXECUTE(@query)
select * from ##FINAL
이 쿼리는 로컬 데이터베이스에서 제대로 작동하지만 SQL Azure에서는 전역 임시 테이블이 허용되지 않으므로이 쿼리는 작동하지 않습니다.
지금 난 내 로컬 데이터베이스에 #FINAL
-##FINA
L를 변경하는 경우,하지만
잘못된 개체 이름으로 나에게 오류를 제공 '#FINAL'.
이 문제를 어떻게 해결할 수 있습니까?
SQL에서 잘 지원되지 않는 무언가 (결과 집합이 가변 개수 인 결과)를 구성하려고하므로 특정 문제가 해결되지 않을 것으로 생각됩니다. 일반적인 경우,이 작업을 수행하려면 외부 범위 (예 : EXECUTE) 이전에 임시 테이블을 만들어야하지만, 열이 무엇인지 모를 때는 임시 테이블을 만들 수 없습니다 필요할 것입니다. –
사실 나는 이미 그것을 시험해 보았고, 나는 temp를 만들었고 @에있는 열 이름을 넣었다. 그것은 in 절에서 사용할 수 없기 때문에 어떤 용도로도 사용되지 않습니다. 즉, FOR SUBJECT_ID IN (SELECT cast (subject_id AS NVARCHAR) from #SUBJECT_ID_TABLE) –
아니요, 요점은 'EXECUTE'이전에 '# Final'임시 테이블을 만드는 것이 었습니다 - 두 스코프 모두에서 액세스 할 수있는 유일한 방법입니다 . 내 대답에서 작동 할 수있는 한 가지 방법을 보여 줬습니다. –