임시 테이블을 사용하여 내부 결합과 다른 TVF에서 CROSS APPLY를 수행하는 방법은 무엇입니까?
당신은 TVF에 가입 할 수 있습니다,하지만 당신은 TVF 호출 내에서 결합 테이블에서 열을 사용할 수 없습니다 문자열에 테이블 반환 함수 테이블을 만들고 여기에
DECLARE @directions VARCHAR(MAX) = 'N, S, W, E'
SELECT a.StreetName, s.Value
FROM dbo.Address a
JOIN dbo.SplitByToken(@directions, ',') s ON a.Direction = s.Value
을 기반으로 - 토큰으로 구분 된 목록. 이 쿼리는 테이블 함수의 결과가 알려져 있고 조인 테이블의 결과마다 변경되지 않으므로 문제가 발생하지 않습니다. 한 번 실행되고 결과 테이블은 Address
에 결합됩니다.
join
대신 cross apply
을 사용해야한다는 것은 TVF를 조인 테이블의 열과 함께 사용하는 경우입니다. 여기
SELECT a.ZIP, g.Long, g.Lat
FROM dbo.Address a
CROSS APPLY dbo.GeoLocation(a.ZIP) g
지리적 위치
우리가 계산시에 사용하는 테이블에 기초하여 계산하고, 기능 번
Address
테이블의 행마다 호출되어야한다.
내부 조인을 사용하면 두 테이블 모두 전체적으로 안정적입니다. 'apply'를 사용하면 오른쪽의 테이블 표현식의 내용이 왼쪽의 각 행마다 바뀔 수 있습니다. –
우리가하려고했던 것에 대한 짧은 코드 샘플을 가지고 있다면, 우리는 더 나은 대답을 구성 할 수 있습니다. –
@MartinSmith 그 대답은 아주 좋은 의미입니다. – rookie