mssql select 문 문의 드립니다.(너무 어려워요)
-
게시물 수정 , 삭제는 로그인 필요
안녕하세요.
저에게 무지 어려워서 고수님들께 질문을 드려 답을 구하고자 합니다.
아래의 조건을 보시고 결과를 출력하는 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
안녕하세요.
저에게 무지 어려워서 고수님들께 질문을 드려 답을 구하고자 합니다.
아래의 조건을 보시고 결과를 출력하는 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