품목코드 | 품목명 | 시작일 | 점검횟수 |
20140001 | 품명1 | 20140801 | 4 |
20140002 | 품명2 | 20140701 | 6 |
20140003 | 품명3 | 20140601 | 2 |
이런 데이타가 있습니다.
여기서 시작일을 기준으로 해서 점검횟수 만큼의 날짜를 구하고 싶습니다.
품목 코드 | 품목명 | 시작일 | 점검횟수 | 1차점검 | 2차점검 | 3차점검 | 4차점검 | 5차점검 | 6차점검 |
20140001 | 품명1 | 20140801 | 4 | 20141031 | 20150130 | 20150501 | 20150731 |
|
|
20140002 | 품명2 | 20140701 | 6 | 20140830 | 20141029 | 20141228 | 20150226 | 20150427 | 20150626 |
20140003 | 품명3 | 20140601 | 3 | 20140930 | 20150129 | 20150530 |
|
|
|
이런식으로 데이터를 뽑고 싶습니다..
검색을 해보고 해도 도무지 길이 보이지 않네요..ㅜㅜ
방법을 좀 알려주세요. 부탁드립니다.
계산 기준은
365 / 점검횟수를 해서 나온 수만 큼 시작일에서 더해 주면 됩니다.
ex) 품명1 기준으로 봤을때.
365/4 = 91 이므로
20140801 + 91 = 20141031 1차점검이 되고
20141031 + 91 = 20150130 2차점검이 되는 방식입니다.
Comment 3
-
건우아빠
2014.09.01 17:49
나머지는 직접 하시면 될듯 합니다...WITH RESAS (SELECT '20140001' 품목코드,'품명1' 품목명 ,'20140801' 시작일 ,4 점검횟수 UNION ALLSELECT '20140002' ,'품명2' ,'20140701' ,6 UNION ALLSELECT '20140003' ,'품명3' ,'20140601' ,2 )SELECT * , CONVERT(VARCHAR(8), DATEADD(DD,(365 / 4) * B.NO ,A.시작일),112) 점검일FROM RES ACROSS APPLY( SELECT NUMBER + 1 NOFROM MASTER.DBO.spt_values WHERE TYPE = 'P' AND NUMBER < A.점검횟수 ) B -
치우비
2014.09.01 17:54
건우아빠님 감사합니다...
한참을 봤었는데 건우아빠 님 덕에 새로운 것도 배우고
해결 할수 있어서 정말 감사 합니다..
-
건우아빠
2014.09.01 18:00
CONVERT(VARCHAR(8), DATEADD(DD,(365 / A.점검횟수) * B.NO ,A.시작일),112) 점검일