0
CROSS APPLY를 테이블 값 기능과 함께 사용하는 것이 좋습니다.CROSS APPLY와 함께 "ON"을 적용 할 수없는 이유는 무엇입니까?
예를 들어, 이것은 완벽하게 정상적으로 작동합니다.
SELECT
TBL1.pkId,
TBL1.roleIS,
TBL1.Name INTO #tmpTBL
FROM TBL1
CROSS APPLY Convert(@keys, ',') AS ArrayTBL
WHERE ArrayTBL.item = TBL1.pkId
"ON"키워드를 적용하자마자 구문 오류가 표시되기 시작합니다. 왜 그것도 그것은 내부 조인의 유형입니까?
SELECT
TBL1.pkId,
TBL1.roleIS,
TBL1.Name INTO #tmpTBL
FROM TBL1
CROSS APPLY Convert(@keys, ',') AS ArrayTBL
ON ArrayTBL.item = TBL1.pkId
아래의 질문에 CROSS APPLY를 사용해야하기 때문에 "ON"을 적용하려고합니다.
Select Tbl1.pkey, Tbl1.Name, Tbl2.EmployeeName
from Tbl1 inner join Tbl2 on Tbl1.id= Tbl2.Id
inner join Convert(@keys, ',') AS Array
ON Tbl2.ItemId = Array.item
inner join Tbl3 on tbl3.id = Array.item
inner join #tmpTBL on #tmpTBL.pkId = Tbl3.id
'CROSS'에는 'ON'이 없습니다. 'ON'은'INNER' 또는'OUTER'에서만 유효합니다. – Ben
'ON' 절을 왜 원하는지 아직도 이해가 안되니? 'WHERE' 절을 사용하면 논리적으로 동일합니다. 일반적으로'CROSS' join은'ON'을 가지고 있지 않으며, 그렇지 않아야합니다. 그것은 데카르트 join을 만듭니다. – sagi
'교차 적용'은 '교차 결합'이므로 크로스 조인에는 조인 열이 없습니다. 표준 키워드를 사용하면 명확 해집니다. '교차 적용'은 표준 SQL에서 '교차 결합'과 동일합니다. –