강좌 제목을 봐서는 이사람이 무슨 얘기를 하시는가???
의문이 드실줄로 압니다. 제가 붙이기가 뭐 해서 그냥 꼴리는데루 붙였으니, 신경쓰지 마시길,,,, 오늘은 어찌보면 아주 유용한 함수를 예로 볼수도 있겠습니다. 미리 말씀 드리지만, 프로시져를 이용해서도 가능하고, 꼭 이방법을 쓰지 않으셔도 얼마든지 다른 방법으로 해결할수 있으시라 믿습니다. 일단 우리가 해야 할일은 이겁니다.
area 테이블에 위와 같은 형식으로 데이타가 존재합니다. 1 값이면, 경기도 지역의 도시들,,, 2 값이면 전라도 지역의 도시들, 3 값이면 경남지역의 도시들,,,, 1 | 인천 , 수원 , 용인 2 | 광주 , 순천 , 여수 3 | 부산 값이 되겠지요???? 쿼리 분석기를 열어서 아래 쿼리를 실행하시면 테이블과 값들이 들어 갑니다.
그렇다면 여러분들이 쿼리를 이용해서 아래의 표와 같이 출력을 시켜야 합니다. 오늘해야 성공해야 할 미션 입니다....
어떠세요??? 쉽게 가능하시겠어요??? 저의 경우는 이 문제를 해결하기 위해서 사용자 정의 함수를 이용하는 방법을 사용합니다. 다음과 같은 함수를 하나 만들어 보세요.
위의 함수를 간단히 설명드리도록 하겠습니다. @pub_id 값에 1 값이 들어 왔을때 '인천 , 수원 , 용인' 값이 출력이 됩니다. 2값이 들어왔을때는 '광주 , 순천 , 여수' 값이 출력되겠지요? @r 변수의 값을 누적시키기 때문에 ',인천 , 수원 , 용인' 값이 들어가겠지요? 여기에서 return 값에 substring(@r,2,8000) 를 주어서 처음 "," 를 뺀 값부터 8000자까지 출력을 시키겠지요??? 이해가지 않으시면 소스를 자세히 분석 바랍니다. 값이 넘어오는것에 따라서 지역을 구분 지을수 있습니다. 그렇다면, 앞의 쿼리에서는 어떤식으로 넘기면 될까요? 아래와 같은 쿼리를 날려주면 해결 됩니다. select pub_id , dbo.f_area(pub_id) from area group by pub_id 쿼리를 보면 pub_id 값을 기준으로 group by를 합니다. 1,2,3 값이 있기 때문에 3개의 레코드가 나오게 되겠지요, 출력을 시킬때 pub_id , dbo.f_area(pub_id) 값을 했습니다. 즉, dbo.f_area(pub_id)를 했기 때문에 f_area 함수를 호출하게 됩니다. 1,2,3 값이 있기 때문에 3번 호출을 하게 되겠지요???? 어떠십니까??? '백문이 불여일타'라 했던가요??? 직접 테스트 해보세요.... 아래는 실제 테스트해본 결과 화면 입니다. ![]() 제목 그대로 입니다. 테이블구조와 다른 구조의 결과를 가져오는 방법을 함수를 이용해 봤습니다. 어떻게 보면 유용하게 사용될때가 언젠가는 있겠지요??? 꼭 도움이 되셨길 바라는 마음에 되지도 않는 문장을 써가며 강좌를 마무리 합니다. 좀더 스킬업이 되셨길,,,
|
|||||||||||||||||||||||||||||||||||||||