SQL错误:ORA-00932:数据类型不一致:预期的CHAR得到了NUMBER

Man*_*ual 3 sql oracle sum to-char

每当它给我空结果时,我都试图将结果“无”。现在,它给我一个0,表示无效结果。如何将行显示为“ none”(无)而不是0(表示无效结果)。

我尝试使用TO_CHAR和TO_NUMBER作为总和,但无法显示“无” ...

CASE WHEN SUM(ENROLLED) = 0 THEN 'none' ELSE SUM(ENROLLED) END AS ENROLLED
Run Code Online (Sandbox Code Playgroud)

所以当尝试上述操作时,我得到SQL错误:ORA-00932:数据类型不一致:预期的CHAR得到了NUMBER

这就是我所拥有的

SELECT lt.STUDENT_ID,lt.FIRST_NAME, lt.LAST_NAME, CASE WHEN SUM(ENROLLED) = 0 THEN 'none' ELSE SUM(ENROLLED) END 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;
Run Code Online (Sandbox Code Playgroud)

而不是

STUDENT_ID FIRST_NAME                LAST_NAME                 ENROLLED
---------- ------------------------- ------------------------- -----------
       253 Walter                    Boremmann                     1 
       396 James E.                  Norman                        0 
etc
Run Code Online (Sandbox Code Playgroud)

我想要这样

STUDENT_ID FIRST_NAME                LAST_NAME                 ENROLLED
---------- ------------------------- ------------------------- -----------
       253 Walter                    Boremmann                     1 
       396 James E.                  Norman                        none
Run Code Online (Sandbox Code Playgroud)

mrk*_*b80 5

尝试使用以下函数:COALESCE(cast(sum(expr1)as varchar),'none')

附带说明一下,我质疑在查询中使用DISTINCT的问题。