-- 要求逻辑
select a from dagege where ....
有记录返回id;
无记录,返回 0
-- 测试表
CREATE TABLE dagege(a VARCHAR2(10), b VARCHAR2(10));
INSERT INTO dagege VALUES('a','b');
INSERT INTO dagege VALUES('a','c');
INSERT INTO dagege VALUES('a','d');
INSERT INTO dagege VALUES('e','f');
INSERT INTO dagege VALUES('e','g');
INSERT INTO dagege VALUES('h','i');
COMMIT;
-- 下面这个有记录能返回数据,但是我做不到无记录返回0,请前辈们帮忙看看
WITH t1 AS
(SELECT COUNT(*) AS cnt,t.a
FROM dagege t
WHERE t.b = 'b'
GROUP BY t.a)
SELECT decode(t1.cnt, 0, '0', t1.a) FROM t1;
------解决思路----------------------
WITH?t1?AS?
??(SELECT?COUNT(*)?AS?cnt,t.a?
??FROM?dagege?t
??WHERE?t.b?=?'b'
??GROUP?BY?t.a
union all
select 0,'b' from dual)
SELECT?a,sum(cnt)?FROM?t1 group by a;
简单拿分走人