mssql select 문 문의 드립니다.(너무 어려워요)

mssql select 문 문의 드립니다.(너무 어려워요)

작성일 2018.05.15댓글 1건
    게시물 수정 , 삭제는 로그인 필요

안녕하세요.
저에게 무지 어려워서 고수님들께 질문을 드려 답을 구하고자 합니다.

아래의 조건을 보시고 결과를 출력하는 SELECT 문을 만들어 주셨으면 합니다.
감사합니다.


★서버 환경
=====================
DB : MSSQL SERVER 2012
테이블명 : A
컬럼명 : SUBJECT  (타입은 nvarchar 이며 과목별 점수가 순서대로 들어 있습니다)


★컬럼 값을 이루는 규칙
=====================
기본적인 룰은
1) 5개 과목의 점수를 나열하되 점수와 점수 사이는 - 로 연결되며 뒤에 무조건 - 6개가 더 붙어

    있습니다.
   즉, 국어점수-산수점수-사회점수-자연점수-미술점수 와 끝에 - 6개를 붙여서
       국어점수-산수점수-사회점수-자연점수-미술점수------  형태 입니다.
2) 각 과목의 점수 부분은 아무것도없거나(비어있거나) N 이거나 숫자가 들어 있습니다.
    점수에 아무것도없거나(비어있거나) N 이면 과목을 취득하지 못한 것으로 해당하는 과목명과 점수를

    출력하지 않습니다.
3) 0을 포함하여 숫자가 들어 있으면 1.1배하여 과목명 한 칸 띠고 점수*1.1배 값을 출력 합니다.
4) 0을 포함하여 숫자가 들어 있는것은 과목명 한 칸 띠고 점수*1.1배 값의 형태로 계속 나열 해줍니다.


룰 추가 요약
- 과 - 사이에 숫자(0포함)가 들어 있으면 과목명과 숫자*1.1의 점수로 출력합니다.
- 과 - 사이에 아무것도 없거나 N 이 들어 있으면 과목명과 점수는 출력하지 않습니다.



SUBJECT 컬럼에 들어 있는 데이터 예시와 설명 그리고 출력되어야 할 결과
==========================================

1번째 국어 

2번째 산수

3번째 사회

4번째 자연

5번째 미술

  데이터 값 설명 출력 결과
1 ---------- - 만 10개 있는 경우로 출력값은 ''로 나와와 합니다.
2 N-N-N-N-N------ 점수 부분에 N 만 있는 경우로 출력값은 ''로 나와와 합니다.
3 N--N-N------- 점수 부분에 N 또는 아무것도 없는 경우 출력값은 ''로 나와와 합니다.
4 N--N--N------ 점수 부분에 N 또는 아무것도 없는 경우 출력값은 ''로 나와와 합니다.
       
5 -0--N-N------ 2번째 과목이 0 인 경우로 과목: 산수 0
6 -0--N-0------ 2,5번째 과목이 0 인 경우로 과목: 산수 0 미술 0
7 0-300-N-0-0------ 1,4,5번째 과목은 0 이고 2번째 과목은300  과목: 국어 0 산수 330 자연 0 미술 0
       
8 500-N-N-N-N------ 1번째만 500 인 경우로 과목: 국어 550
9 500-N--N-N------ 1번째만 500 인 경우로 과목: 국어 550
10 500---N-N------ 1번째만 500 인 경우로 과목: 국어 550
11 30-N-0-N-N------ 1번째 30 이고 3번째 0인 경우로 과목: 국어 33 사회 0
12 -3000------ 2번째만 3000 인 경우로 과목: 산수 3300
13 500-300------- 1번째 500 이고 2번째 300 인 경우로 과목: 국어 550 산수 330
14 -300-700------ 2번째 300 이고 3번째 700 인 경우로 과목: 산수 330 사회 770
15 N-300-700------ 2번째 300 이고 3번째 700 인 경우로 과목: 산수 330 사회 770
16 --20000--100---- 3번째 20000 이고 5번째 100 인 경우로 과목: 사회 22000 미술 110
17 -100-N-200-30000---- 2번째100 4번째 200 이고 5번째 3만 과목: 산수 110 자연 220 미술 33000
18 -100--200-30000---- 2번째 100 4번째 200 이고 5번째 3만 과목: 산수 110 자연 220 미술 33000
19 -100-0-200-30000---- 2번째 100 3번째 0 4번째 200 5번째3만 과목: 산수 110 사회 0 자연 220 미술 33000
20 N-100-0-200-30000---- 2번째 100 3번째 0 4번째 200 5번째3만 과목: 산수 110 사회 0 자연 220 미술 33000



#mssql select insert #mssql select into #mssql select update #mssql select #mssql select into 임시테이블 #mssql select if #mssql select 변수 대입 #mssql select 결과 없을때 #mssql select create table #mssql select lock

profile_image 익명 작성일 -

이런 도전정신이 필요한 질문 좋아합니다. ^^*


1. 먼저 문자열 자르기 함수를 만듭니다.
http://blog.naver.com/PostView.nhn?blogId=chsmanager&logNo=140204470190&parentCategoryNo=&categoryNo=65&viewDate=&isShowPopularPosts=false&from=postView

요기서 퍼와서 조금 수정하였습니다.


2. 함수를 사용하여 원하는 쿼리를 만듦

2-1. 값이 공백 이거나 N 만 들어 있으면 공백문자 다른 값이 들어 있으면  '과목 :' 반환
2-2. 문자열자르기 함수를 가져와서 값이 있으면 1.1배를 하고 문자열로 변환
      (INT 형 두번째 한것은 1.1을 곱하면 실수형이 되어 버리므로 정수형으로 변환하기 위함)
2-3. 과목명 에 문자열로 변환한 값을 붙임
2-4. 값이 없을 경우 함수에서 NULL 이 반환되므로 *1.1 을 해도 NULL , 과목명을 붙여도 NULL
      값이있는 경우에만 과목명 나옴





mssql select문 질문있습니다!!!

... 부탁드립니다 안녕하세요 질문이 모호합니다만 해당 쿼리를 union all로 4번 실행시키시면 됩니다 select * from ~~~~~ union all select * from...

Mssql select 문 질문드립니다.

select * from TBL1_LottoEvent where num1=7 and num2 = 14 and... select문 누락없어 검색하는 방법좀 알려주세요. 초짜입니다. select * from TBL1_LottoEvent where num1=7...

Ms sql select문 질문합니다

안녕하세요~ MS SQL 초보입니다. 쿼리와... 이에 질문을 좀 드립니다. --데이터베이스... --전체 결과출력 select * from books /* 결과화면...

mssql에서 select 방법 문의 드립니다.

... 질문 드립니다. 테이블을 리턴해주는 함수도 사용해보고 제가 아는한... c,java등 프로그램에서 사용을 한다면 sql += "select key3,count(*) as cnt where key3...

MS-SQL 에서 select문에 대한...

... SQL문의 결과값으로 두개의 테이블인데 하나의 테이블로 만들고 싶습니다. SQL문 : 1) select substring(RegistNo,7,1), graddiv,count(GradDiv) as...