
SELECT PT_NAME,PT_NO,GEND_CD,AGE, COALESCE(TLNO,"NONE") AS TLNO FROM PATIENT WHERE AGE<=12 AND GEND_CD='W' ORDER BY AGE DESC, PT_NAME ASC;
여기 조건을 딱 정리하자면
1. 12세 이하만(AGE<=12)
2. 여자환자(W)
3. 환자이름, 환자번호, 성별 코드, 나이, 전화번호 조회
4. 전화번호가 (null)값이라면 'NONE' 출력
5. 우선순위 (1) 나이 내림차순 (AGE DESC), (2) 환자 이름 오름차순(PT_NAME ASC)
여기서 가장 어려웠던 부분! Update나 insert 부분은 is not null이나 is null을 사용해서 null 값이 있는 부분을 판별하면 되는데, SELECT 문은 처음이었습니다. 그래서 다른 개발자 분들의 소스를 보고, 참고하여 작성했습니다!
영어 단어 coalesce는 원래 "합쳐지다"라는 뜻이며
데이터베이스에서는 NULL 값을 다른 대체 값으로 바꾸거나 여러 컬럼을 병합하여 유효한 값을 찾을 때 사용합니다!
요즘 코테 하면 level 2보다 1이 어려운 것 같아요,,,
COALESCE.. SQLD 준비할 때 봤던 거 ㅋㅋㅋ NVL도 비슷하게 NVL(c1, c2)일 때 c1이 NULL이면 c2가 되고 아니면 c1이 유지돼요!
(COALESCE는 인자를 여러 개 쓸 수 있는데 앞에서부터 순서대로 NULL이 아닌 값을 반환해용.)
추가로 NVL2, NULLIF도 있어요.. SQLD 준비하시는 거 아니면 찾아보진 마세요 ^^
쿼리문 구조가 되게 복잡해 보이는데 참고해서라도 해내신 게 대단한 것 같아요! 수고 많으셨어욤 😊