오라클 다건 서브쿼리와 CROSS JOIN
SELECT B1.ROM_NO, (SELECT LEVEL FROM DUAL CONNECT BY LEVEL <= ( SELECT B2.ROM_SE
FROM TABLE1 B2 /* 호실관리 */
WHERE B2.YEAR_SE = B1.YEAR_SE
AND B2.SEMSTR_CODE = B1.SEMSTR_CODE
AND B2.BULD_CODE = B1.BULD_CODE
AND B2.ROM_NO = B1.ROM_NO
)
) AS J_KEY
FROM TABLE1 B1 /* 호실관리 */
WHERE B1.YEAR_SE = '2021'
AND B1.SEMSTR_CODE = '20'
AND B1.BULD_CODE = '11'
AND B1.ROM_NO = 'J1000'
오라클은 서브쿼리가 다건이라는 에러가 나서 이런경우 CROSS JOIN 을 사용해서 해결한다.
SELECT A.ROM_NO
, B.J_KEY
FROM ( SELECT B1.ROM_NO
, B1.ROM_SE
FROM TABLE1 B1 /* 호실관리 */
WHERE B1.YEAR_SE = '2021'
AND B1.SEMSTR_CODE = '20'
AND B1.BULD_CODE = '11' ) A
CROSS JOIN (SELECT LEVEL AS J_KEY FROM DUAL CONNECT BY LEVEL <= 10 ) B
WHERE A.ROM_SE >= B.J_KEY
CROSS JOIN (SELECT LEVEL AS J_KEY FROM DUAL CONNECT BY LEVEL <= 10 ) B
진짜는 이부분을
CROSS JOIN (SELECT LEVEL AS J_KEY FROM DUAL CONNECT BY LEVEL <= B1.ROM_SE ) B
이렇게 바꾸고 싶은건데 이건 안되네 그냥 최대값을 지정해서 구하고 필요한 값만큼 사용하는 걸로 만족해야 하나 보다.