0

nullの結果が得られるたびに、結果を「なし」にしようとしています。現在、nullの結果に対して0が返されています。null 結果の 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は 2 番目の式を返し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 に答える