0

每次它给我一个空结果时,我都试图得到一个结果“无”。现在它给我一个 0 的空结果。对于空结果,我怎么能有一行显示“无”而不是 0。

我已经尝试过 NVL(SUM(ENROLLED),'none') AS ENROLLED 并且它不起作用

SELECT DISTINCT lt.STUDENT_ID,lt.FIRST_NAME, lt.LAST_NAME, NVL(SUM(ENROLLED),'none') AS ENROLLED
FROM STUDENT lt
LEFT OUTER JOIN
(SELECT s.STUDENT_ID, e.ENROLL_DATE,COUNT(z.COURSE_NO) AS ENROLLED
FROM   STUDENT s
LEFT   JOIN ENROLLMENT e ON s.STUDENT_ID = e.STUDENT_ID
LEFT   JOIN SECTION z ON e.SECTION_ID = z.SECTION_ID
WHERE  s.PHONE LIKE '702%'
GROUP  BY s.STUDENT_ID, e.ENROLL_DATE) rt
ON lt.STUDENT_ID = rt.STUDENT_ID
WHERE lt.PHONE LIKE '702%'
GROUP BY lt.STUDENT_ID,lt.FIRST_NAME, lt.LAST_NAME,ENROLLMENTS;

现在我得到

STUDENT_ID FIRST_NAME                LAST_NAME                 ENROLLED
---------- ------------------------- ------------------------- -----------
       253 Walter                    Boremmann                     1 
       396 James E.                  Norman                        0 
etc

但我想要

STUDENT_ID FIRST_NAME                LAST_NAME                 ENROLLED
---------- ------------------------- ------------------------- -----------
       253 Walter                    Boremmann                     1 
       396 James E.                  Norman                        none
4

1 回答 1

1

您似乎将null值与0. 它们是不相同的。NVL如果不是,则返回第一个表达式;如果null第一个是,则返回第二个表达式null。因为0不是null那么你总是会得到SUM(ENROLLED)。你应该比较使用0.

只需更改此:

NVL(SUM(ENROLLED),'none') AS ENROLLED

进入这个:

CASE WHEN SUM(ENROLLED) = 0 THEN 'none' ELSE SUM(ENROLLED) END AS ENROLLED
于 2013-11-09T17:17:12.910 回答