쿼리를 하다 보면 데이터 값이 전혀 없는 경우가 있는데
이럴때 강제적으로 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