SQL의 CASE 문을 Excel의 IF 문으로 표현

4927 단어 SQLExcel테스트
직접 작성한 SQL 문을 직접 테스트 할 때 별도의 테스트 데이터로 Excel을 사용하여 만들어 놓은 답변 값과 실제로 SQL을 실행하여 검색 한 값을 비교하는 경우가 있습니다. .

할 수 있는 선배는 간단하게 말해.
「엑셀로 대답 만들고 있어! 그것과 비교하면 좋으니까!」

「네, 알았습니다(엑셀로 어떻게 만들지요)」

엑셀의 방법을 선배에게 질문하는 것은 과연 참을 수 없기 때문에, 스스로 어떻게든 합니다. 이번은 CASE 문과 같은 처리를 표현합니다. IF문의 중첩으로 합니다.

SQL의 CASE문으로 부여한 값이, 예를 들어 GROUP BY의 키가 되어 있거나 하는 경우, 엑셀로 표현하려면 IF 조건 분기로 작업열을 작성하고 나서, 피벗 하는 되어 모의 실행 결과를 만듭니다 .

SQL의 CASE 문 예



예를 들어,
"학생 번호, 이름, ……"CSV 파일이 있습니다.

▼테이블명:KOHUN_ASUKA_CLASS


학생 번호(열명:STUDENT_ID)
이름(열 이름: STUDENT_NAME)


0010
卑弥呼

0011
소가마코

0012
성덕 태자

0013
오노 여동생

0014
중신 낫다리

0015
중대형 황자

0016
천무천황

0017
인덕천황


수학 여행에 가기 때문에, 1반·2반으로 나누고 싶습니다.
학생 번호가 0010~0013이 1반,
0014~0017이라면 2반으로 하기로 했습니다(열명:GROUP_NUM)

CASE.sql
SELECT
    STUDENT_ID,
    STUDENT_NAME,
    CASE
        WHEN STUDENT_ID BETWEEN '0010' AND '0013' THEN '1'
        WHEN STUDENT_ID BETWEEN '0014' AND '0017' THEN '2'
        ELSE '0'
    END AS GROUP_NUM
FROM
    KOHUN_ASUKA_CLASS

▼실행 결과


STUDENT_ID
STUDENT_NAME
GROUP_NUM


0010
卑弥呼
1

0011
소가마코
1

0012
성덕 태자
1

0013
오노 여동생
1

0014
중신 낫다리
2

0015
중대형 황자
2

0016
천무천황
2

0017
인덕천황
2


Excel의 조건 분기에서 CASE와 같은 일을합니다.





Excel의 A 열에 STUDENT_ID, B 열에 STUDENT_NAME, C 열에 GROUP_NUM을 출력합니다.
C2에 아래의 함수를 쓰고, 후에는 아래까지 자동으로 채우면 완성입니다.

IF.xlsx
# GROUP_NUM
=IF(AND(0010<=A2,A2<=0013),"1"
    ,IF(AND(0014<=A2,A2<=0017),"2","0")
    )



※Excel 자체의 셀 표시 형식(수치, 문자열 등)이 어긋나 있으면, 구하는 결과를 얻을 수 없는 경우가 있으므로, 거기는 조정해 주세요.



IF 함수 인수_Excel
=IF(条件式, 真の場合, 偽の場合)

조건이 더 많을 때는?



조건이 늘어나도 중첩 된 "가짜 경우"에 수시로 추가하면 OK.

학생이 더 많아서 이럴 때,
0010~0013→1반
0014~0017→2반
0018~0021→3반
0022~0025→4반

IF_2.xlsx
# GROUP_NUM
=IF(AND(0010<=A2,A2<=0013),"1"
    ,IF(AND(0014<=A2,A2<=0017),"2"
        ,IF(AND(0018<=A2,A2<=0021),"3"
            ,IF(AND(0022<=A2,A2<=0025),"4","0")
           )
       )
   )

이상

좋은 웹페이지 즐겨찾기