반응형

쿼리를 작성 하다보면 월별 마지막 일자를 구해야 될때가 있는데 쿼리 내에서 계산을 해도 되겠지만

테이블로 생성시켜 놓고 년월 으로 JOIN만 해서 가져오는 식으로 하면 간편하고 쿼리 가독성도

높아서 이와 같은 방식을 추천 합니다.

다음과 같이 row 수가 많은 아무 테이블(아래 예제는 거래처)을 이용해서 일괄 생성 할 수 있습니다.


CREATE TABLE tblLastDate
(YM nchar(6) PRIMARY KEY,
LastDate nchar(8)
)

INSERT INTO tblLastDate (YM, LastDate)
SELECT
    convert(nchar(6), dateadd(m, b.ord - 1, '20000101'), 112) as YM,
    convert(nchar(8), dateadd(d, -1, dateadd(m, b.ord, '20000101')), 112) as LastDate
FROM 
(
    SELECT
        top 1000
        (ROW_NUMBER() OVER (PARTITION BY 0 ORDER BY custseq)) ord
    FROM tblCust
) b

다음과 같이 년월별로 마지막 일자를 가진 테이블이 생성 됩니다.

SELECT * FROM tblLastDate


반응형

+ Recent posts