오라클에서 레코드 값이 없을때

by 조쉬 posted Dec 08, 2016
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

 

쿼리를 하다 보면 데이터 값이 전혀 없는 경우가 있는데

이럴때 강제적으로 0을 넣어주는 방법이 없을까요

asp에서 데이터를 가져와서 표현해주는 것이 있는데 레코드가 존재하지 않아서 표현하기가 엄청 힘드네여...누군가 union으로 조인해줘서 데이터를 강제적으로 넣어

주라는데 잘 되질 않네요..어떻게 해야하는지요

쿼리 :

SELECT YAEYAK_DATE,YAEYAK_COURSE, YAEYAK_TIME, TIME_GUBUN,
SUBSTR(NVL(MEMBER_NO,'A'),1,1) AS M_GUBUN,
SUBSTR(NVL(EVENT_NO,'A'),1,1) AS E_GUBUN,COUNT(*) AS CNT
FROM HA010MS
WHERE YAEYAK_DATE LIKE :TO_MONTH ||'%'
GROUP BY YAEYAK_DATE,YAEYAK_COURSE,YAEYAK_TIME,
TIME_GUBUN,SUBSTR(NVL(MEMBER_NO,'A'),1,1),
SUBSTR(NVL(EVENT_NO,'A'),1,1)

여기다가 어떻게 조인을 걸어줘야 하는지 궁금합니다.

 

 

Answer :

 

조건에 맞는 데이타가 없어 no rows selected가 나오는데 데이타가 없으면
0을 return하고 싶으면 select 절에 max 함수를 사용하면 나올수 있습니다.

아래의 예제를 보시고 활용하시면 될것입니다.

SQL> select * from test99
2 ;

Col1 Col2 Col3 Col4
- - - -
a b 1 2
a b 1 5
a b 2 3
a b 2 7

SQL> select col1 from test99 where col1 like 'b%';

no rows selected

SQL> select nvl(max(col1||count(1)),0) from test99 where col1 like 'a%' group by col1;

NVL(MAX(COL1||COUNT(1)),0)
-----------------------------------------
a4


SQL> select nvl(max(col1||count(1)),0) from test99 where col1 like 'b%' group by col1;

NVL(MAX(COL1||COUNT(1)),0)
-----------------------------------------
0


Articles

1 2 3 4 5 6 7