데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
테이블 년도 컬럼에 여러 년도 값들이 있고
시작년도와 종료연도 값을 파라미터로 받을 때
그 년도기간 사이에 존재하지 않는 년도 1건을 찾을려고 합니다..
년도 |
2000 |
2001 |
2003 |
2004 |
2005 |
시작연도: 2000
종료연도: 2004
결과: 2002
저 같은 경우에는 while문을 돌려서 시작연도 값을 +1 씩 하면서 테이블에 해당 년도 값이 존재하는지 체크하는 방식으로
쿼리를 작성했는데 좀 더 쉽게 구할 수 있는 방법 없을까요??
@start datetime = '2000-01-01'
,@end datetime = '2004-01-01'
;with year_list as (
select year(dateadd(year,number,@start)) as years
from master..spt_values
where number between 0 and datediff(year,@start,@end)
and type = 'p'
)
select years
from year_list as a
left join tbl_year as b
on b.years = a.years
where b.years is null;