* 설명 : 테이블1(메인) = CST_CONTRACT_MST /KEY : contract_seq
테이블2(가져올테이블) = DIS_DELIVERY_MST / KEY : delivery_seq
테이블1에서 테이블2정보 가져올시 1:N의 관계임
테이블2의 상위 1개의 정보만 가져오려고하는데 아래와같이 쿼리문으로 실행함.
테이블 2를 조인문 사용하여 다른 컬럼들도 가져올 수 있도록 바꿀수있는 방법이 있을까요 고수님들 답변부탁드립니다.
----------------------------------------------------------------------------------------
SELECT
CCM.CONTRACT_SEQ
,CCM.CONTRACT_CD
,CCM.CUST_CD
,(select top 1 DELIVERY_STATE_COMM_CD
from DIS_DELIVERY_MST
where CONTRACT_SEQ = CCM.CONTRACT_SEQ and DELIVERY_CANCEL_YN='N' and DELETE_YN='N'
order by CONTRACT_SEQ, delivery_seq desc) as DELIVERY_STATE_COMM_CD --배송상태
,(select top 1 OUTGOING_STATE_COMM_CD
from DIS_DELIVERY_MST
where CONTRACT_SEQ = CCM.CONTRACT_SEQ and DELIVERY_CANCEL_YN='N' and DELETE_YN='N'
order by CONTRACT_SEQ, delivery_seq desc) as OUTGOING_STATE_COMM_CD --검품상태
,(select top 1 DELIVERY_REQUEST_DATE
from DIS_DELIVERY_MST
where CONTRACT_SEQ = CCM.CONTRACT_SEQ and DELIVERY_CANCEL_YN='N' and DELETE_YN='N'
order by CONTRACT_SEQ, delivery_seq desc) as DELIVERY_REQUEST_DATE --배송요청일
, CCM.DELETE_YN
, CCM.REG_DT
, CCM.REG_ID
, CCM.UPD_DT
, CCM.UPD_ID
FROM
CST_CONTRACT_MST CCM
WHERE CCM.DELETE_YN = 'N'
ORDER BY CCM.contract_Seq DESC
해당 하위쿼리의 테이블 JOIN으로 변경하고 싶습니다.
안녕하세요~~ SQL Server 2005 이상이라면.. CROSS APPLY를 활용해보세요~~
SELECT
CCM.CONTRACT_SEQ
,CCM.CONTRACT_CD
,CCM.CUST_CD
, DELIVERY_STATE_COMM_CD
, OUTGOING_STATE_COMM_CD
, DELIVERY_REQUEST_DATE
, CCM.DELETE_YN
, CCM.REG_DT
, CCM.REG_ID
, CCM.UPD_DT
, CCM.UPD_ID
FROM
CST_CONTRACT_MST CCM
CROSS APPLY(
SELECT TOP 1 DELIVERY_STATE_COMM_CD, OUTGOING_STATE_COMM_CD, DELIVERY_REQUEST_DATE
FROM from DIS_DELIVERY_MST
where CONTRACT_SEQ = CCM.CONTRACT_SEQ and DELIVERY_CANCEL_YN='N' and DELETE_YN='N'
order by CONTRACT_SEQ, delivery_seq desc)
WHERE CCM.DELETE_YN = 'N'
ORDER BY CCM.contract_Seq DESC
감사합니다^^