2013-11-08 2 views
1

Я получаю правильный результат, но теперь вместо того, чтобы показывать мне результат, который равен 0, я хочу, чтобы они отображали мне нулевой результат. Как я могу получить результат null вместо 0?Как отобразить строку, которая равна нулю, а не 0

SELECT w.FIRST_NAME,w.LAST_NAME,COUNT(s.SECTION_ID) AS COUNTED_SECTIONS 
FROM INSTRUCTOR w LEFT OUTER JOIN SECTION s 
ON w.INSTRUCTOR_ID = s.INSTRUCTOR_ID 
GROUP BY w.FIRST_NAME,w.LAST_NAME 
ORDER BY w.LAST_NAME; 

в настоящее время показывает

FIRST_NAME    LAST_NAME     COUNTED_SECTIONS 
------------------------- ------------------------- ---------------- 
Rick      Chow          0 
Marilyn     Frantzen        10 
Fernand     Hanks         9 
Charles     Lowry         0 
etc 

, но я хочу

FIRST_NAME    LAST_NAME     COUNTED_SECTIONS 
------------------------- ------------------------- ---------------- 
Rick      Chow          
Marilyn     Frantzen        10 
Fernand     Hanks         9 
Charles     Lowry          
etc 

Я пробовал с NVL и он не работает

NVL(COUNT(s.SECTION_ID),NULL) AS COUNTED_SECTIONS 

ответ

2

Я думаю NULLIF() является доступно в оракуле:

SELECT w.FIRST_NAME,w.LAST_NAME,NULLIF(COUNT(s.SECTION_ID),0) AS COUNTED_SECTIONS 
FROM INSTRUCTOR w LEFT OUTER JOIN SECTION s 
ON w.INSTRUCTOR_ID = s.INSTRUCTOR_ID 
GROUP BY w.FIRST_NAME,w.LAST_NAME 
ORDER BY w.LAST_NAME; 
+0

Спасибо, именно то, что я искал. – Manual

1

Try NULLIF:

SELECT w.FIRST_NAME,w.LAST_NAME, NULLIF(COUNT(s.SECTION_ID), 0) AS COUNTED_SECTIONS 
FROM INSTRUCTOR w LEFT OUTER JOIN SECTION s 
ON w.INSTRUCTOR_ID = s.INSTRUCTOR_ID 
GROUP BY w.FIRST_NAME,w.LAST_NAME 
ORDER BY w.LAST_NAME; 
1

Вы можете использовать DECODE для того, чтобы решить, что вы хотите отобразить

DECODE(COUNT(s.SECTION_ID),0, NULL, COUNT(s.SECTION_ID)) AS COUNTED_SECTIONS 
+1

Не знал о DECODE FUNCTION, хорошо знать и благодарить за обмен. – Manual

Смежные вопросы