문서번호를 다음과 같이
물론 여기서 2007은 프로그램에서 해당년도값을 변수로 받아와야한다.
.
.
.
SELECT '2007' + '-' + REPLACE(STR(SUBSTRING(MAX(QTN_NO), 6, 4) + 1, 4), ' ', '0') AS Expr1
FROM QTN
WHERE (SUBSTRING(QTN_NO, 1, 4) = '2007')
쿼리문을 사용하면된다. 마찬가지로 2007이란 값은 프로그램에서 해당년도를 가져와야한다.
분석!
먼저 where 조건을 앞의 2007이란 값으로 준다. 2007이란 해당년도란 변수!
그러면 2007년의 문서들이 검색될것인데 그중에서 MAX값만 받아온다.
하지만 우리가 원하는 값은
쉽게 생각하면 그냥 +1만해주면 될것같기도 한데...그건 int값일때에서나 되고 지금
MS-SQL에서는 nvarchar란값이므로 오류가생긴다.
그래서 어쩔수없이 값을 자르고 붙이고를 하는것이다.
먼저
SUBSTRING(MAX(QTN_NO), 6, 4) <-- MAX(QTN_NO) =
고로 0004
STR(SUBSTRING(MAX(QTN_NO), 6, 4) + 1, 4) <-- 위에서 0004가 나왔는데 여기에 숫자를 1더해주면 문자열이 숫자로
바뀌어서 5로 나온다. 우리는 5란숫자가 필요없고 0005문자가 필요
하다
그래서 STR함수로 숫자를 문자로 바꿔주고 4자리로 만든다. 문자!
STR함수는 숫자를 문자열로 변환 시키는 함수로 str(변환대상숫자, 변환후문자열자리수,소수점부분자리수)
아 래예
str(Sum(Case When Substring(dd, 1,4) ='2003' Then AA.qty1 Else 0 End)/12, 10,2)
2003 이면 aa.qty1 을 sum 하여 12로 나누고 그 값을 10자리 문자열로 변환시키고 소숫점 자리수는 2자리로 표현
REPLACE(STR(SUBSTRING(MAX(QTN_NO), 6, 4) + 1, 4), ' ', '0') <-- 4자리로 만든 문자가 XXX5이다.
(XXX는 빈칸이다. NULL도 아니고 그냥빈칸)
REPLACE함수로 빈칸을 000으로 바꿔준다.
고로 0005라는 문자값을 받아온다.
'2007' + '-' + REPLACE(STR(SUBSTRING(MAX(QTN_NO), 6, 4) + 1, 4), ' ', '0')
이제 앞에 우리가 해당년도 2007(변수로 받아온값)을 넣어주고 '-'를 붙여주고 0005값을 붙여준다.
이러면 우리가 원하는