탐고루주의 끄적임

MSSQL에서 최대값의 Row를 추출하는 방법

耽古樓主 2024. 8. 4. 03:50

select Distinct S.CustNo, S.BillDate  from Suip S
left join Suip Q on S.CustNo=Q.CustNo AND S.BillDate < Q.BillDate 
where    Q.BillDate is null 

// Self left Join을 사용하여 CustNo가 동일한 조건 내에서 BillDate의 최대값을 가져온다

// BillDate가 유일하지 않다면 리턴값은 @Row이상이 된다. 리턴되는 Row를 1개만 나타내려면  Distinct를 사용한다.

/ /order by절을 사용한다면 order by CustNo가 되어야 한다.(자동으로 CustNo 에 대하여 Set order이 적용된다는 말씀)

 

//나의 프로그램에서 아래와 같이 응용하고 잊지 않기 위하여 기록해 둔다

select Distinct C.custNo  from Suip S
left join Suip Q on S.CustNo=Q.CustNo AND S.BillDate < Q.BillDate 
join customer C on C.CustNo=S.custNo 
join View_MisuOfSuip V on V.SuipNo=S.SuipNo 
where    Q.BillDate is null and S.billdate < '2020.12.31' and V.MisuOfSuip=0
     and (C.DealNo=5 or DealNo= 3)