사용자 정의 함수를 통해 일부 뷰를 리팩터링했으며 동일한 값을 유지하고자합니다. 내가 이것을 적용하면, 나는 결과로 행 번호를 얻으SQL Server 제외 및 ANSI NULLS
SET ANSI_NULLS OFF
GO
SELECT TOP 1000 [DealNumber]
,...others
FROM OLD_VIEW
EXCEPT
SELECT TOP 1000 [DealNumber]
,...others
FROM NEW_VIEW
:이 테스트하는 작은 스크립트를 작성했습니다
경우입니다. 그러나 어떤 행에서 DealNumber를 가져 오면 다음을 실행합니다.
SET ANSI_NULLS OFF
GO
SELECT [DealNumber]
,...others
FROM OLD_VIEW
WHERE DealNumber = 'MyDealNumber'
EXCEPT
SELECT [DealNumber]
,...others
FROM NEW_VIEW
WHERE DealNumber = 'MyDealNumber'
예상대로 빈 레코드 집합을 반환합니다.
대체 방법으로 이전 테스트를 수행하는 Test_View_Correctness 함수를 작성했습니다. 그러나 이것을 다음과 같이 실행하면 :
SELECT TOP 1000 [DealNumber] from OLD_VIEW
where DealNumber IN (SELECT a.DealNumber
FROM Test_View_Correctness(DealNumber) as a)
예외 접근 방식을 어떻게 보장 할 수 있습니까?
이 키워드 'ORDER'근처의 구문이 잘못을 얻을 수 있습니다. – Edmondo1984
SQL BOL에서 : ORDER BY 절에있는 열 이름 또는 별칭은 왼쪽 쿼리에서 반환 된 열 이름을 참조해야합니다. –
@ Edmondo1984 편집보기 –