
오라클에서 집계함수인 COUNT()를 사용하는 방법입니다. SELECT COUNT(CASE WHEN CRSE_TY = '0' THEN 1 END) FROM DUAL # 예시 테이블의 데이터는 위 이미지보다 더 많습니다. SELECT COUNT(CASE WHEN CRSE_TY = '0' THEN 1 END) AS CRSE_TY_ELRN ,COUNT(CASE WHEN CRSE_TY = '1' THEN 1 END) AS CRSE_TY_OFL ,COUNT(CASE WHEN CRSE_TY = '2' THEN 1 END) AS CRSE_TY_BLEND FROM CRSE_MASTR WHERE EDC_TY = '001' CASE WHEN을 사용하여 집계할 컬럼의 조건을 걸어주고 THEN을 사용하여 일치할 때 1을 더해..

# 원인 내용을 보면 란 내용을 볼 수 있습니다. 내용인 즉 오라클에 접속할 때 지정해주는 SID가 있는데 해당 SID를 가진 리스너가 연결되어 있지 않다는 내용입니다. 상황에 따라서 SID자체를 변경해 주어야만 해결이 될 수도 있지만 대부분의 경우 접속이 되다가 어느날 갑자기 접속이 안된다면 리스너가 실행되지 않아서 그렇습니다. 대부분의 연습용 Oracle의 경우 다음과 같이 SID를 XE로 사용하는 경우가 많습니다. # 해결 윈도우키+R 을 눌러 실행창을 열어 줍니다. 열기에 services.msc를 입력해 줍니다. 그러면 다음과 같은 서비스 창이 뜹니다. 밑으로 내리다 보면 해당 라인의 OracleServiceXE 란 이름을 보실 수 있습니다. 더블클릭해 줍니다. 오라클을 설치하게 되면 자동으로 자..

오라클에서 페이징 처리 등을 할때 로우의 순번을 매긴 뒤 정렬을 해줘야 합니다. 이때 ROW_NUMBER() 을 사용하면 쉽게 순번을 매길수 있습니다. # 예제 코드 예제 테이블에서 단순 SELECT 쿼리문했을 때 위와 같은 로우를 보여줍니다. 그리고 저 테이블의 로우를 날짜(REGIST_DT)로 정렬하고 싶습니다. ORDER BY를 사용하여 정렬 할 수 있겠지만 이렇게만 하면 분명 한계가 존재합니다. 페이징 처리를 해야한다고 가정해봅시다. 1, 2, .. 페이지 등이 존재할 것이고, 한 페이지에는 10개의 로우를 보여주고 로우는 날짜를 기준으로 뷰에 뿌려진다고 합시다. 만약 ORDER BY만 사용한다면 1페이지에는 문제 없이 로우값을 뿌릴수 있겠지만, 문제는 2페이지부터 입니다. 2페이지에서 11번째부..

오라클 테이블에 존재하는 레코드들중 최대 seq를 가지는 레코드를 가져오고 싶을때 사용하는 방법입니다. l 예시 아래와 같이 데이터들이 있습니다. 가장 큰 seq인 106의 row를 가져오고 싶습니다. (맨 앞 컬럼이 seq입니다.) SELECT ROWNUM, TEMP.* FROM ( SELECT * FROM TABLE_01 WHERE 1=1 ORDER BY SEQ DESC ) TEMP WHERE 1=1 AND ROWNUM = 1 ORDER BY로 순서를 정한 뒤 ROWNUM을 이용해 가져올 수 있습니다. l 결과 실행 결과 잘 가져온 것을 볼 수 있습니다. 읽어주셔서 감사합니다. 질문은 언제나 환영합니다. "난 반드시 백엔드 왕이 될거야"