본문 바로가기
Develop/MSSQL

[sql] cross apply 사용법 뭐지 어떻게 쓰지

by 3-stack 2021. 10. 25.

- CROSS APPLY : 다른 테이블 이용해서 INNER JOIN 이랑 동일한 기능.

SELECT *
FROM table_a SS
CROSS APPLY (
  SELECT *
  FROM table_a X
  WHERE SS.col_1 = X.col_1
    AND SS.col_2 = X.col_2
    AND SS.col_3 = X.col_3
) XX


- INNER JOIN  : 위에 CROSS APPLY 사용한 결과와 같은걸 확인할 수 있다.

SELECT *
FROM table_a SS
INNER JOIN table_a X
   ON SS.col_1 = X.col_1
  AND SS.col_2 = X.col_2
  AND SS.col_3 = X.col_3


- CROSS APPLY : VALUES 로 데이터 주기(table-valued expression)

SELECT *
FROM table_a SS
CROSS APPLY (
  VALUES
  ( 'aaa' ,'bbb', 'ccc' )
) X ( col_1, col_2, col_3 )
WHERE SS.col_1 = X.col_1
  AND SS.col_2 = X.col_2
  AND SS.col_3 = X.col_3





 


SELECT *
FROM tbEvalResult ER
CROSS APPLY (
--SELECT SS.StuSetIdx FROM tbStuSet SS WHERE SS.StuSetIdx = ER.StuSetIdx AND SS.StuSetIdx = 1145
VALUES( 1145 )
) tb ( StuSetIdx )
WHERE ER.StuSetIdx = tb.StuSetIdx

댓글