给你个例子: SELECT CASE WHEN S.EMPNO > 7600 THEN (SELECT '***' || D.DNAME FROM SCOTT.DEPT D WHERE D.DEPTNO = S.DEPTNO) ELSE ENAME END, EMPNO FROM SCOTT.EMP S;
2楼给你的例子是对的,如果你报错,说明你的scott(默认数据库)被修改过,导致 SELECT '***' || D.DNAME FROM SCOTT.DEPT D WHERE D.DEPTNO = S.DEPTNO 出现了多条数据。 如果要不出错很简单,加一个条件rownum=1就可以了。
SELECT CASE
WHEN S.EMPNO > 7600 THEN
(SELECT '***' || D.DNAME
FROM SCOTT.DEPT D
WHERE D.DEPTNO = S.DEPTNO)
ELSE
ENAME
END,
EMPNO
FROM SCOTT.EMP S;
SELECT '***' || D.DNAME
FROM SCOTT.DEPT D
WHERE D.DEPTNO = S.DEPTNO
出现了多条数据。
如果要不出错很简单,加一个条件rownum=1就可以了。