如何在Oracle SQL中创建基于多用户ID与状态统计的视图
Oracle SQL 创建用户状态统计视图
可以通过条件聚合分别统计两张表的状态数量,再通过关联查询合并结果,最后创建视图。具体SQL如下:
CREATE VIEW UserStatusSummary AS SELECT COALESCE(t1.User_ID, t2.User_ID) AS User_ID, NVL(t1.Table1Done, 0) AS Table1Done, NVL(t1.Table1NotDone, 0) AS Table1NotDone, NVL(t2.Table2Done, 0) AS Table2Done, NVL(t2.Table2NotDone, 0) AS Table2NotDone FROM ( -- 统计表1的Done和Not Done数量 SELECT User_ID, COUNT(CASE WHEN Status = 'Done' THEN 1 END) AS Table1Done, COUNT(CASE WHEN Status = 'Not Done' THEN 1 END) AS Table1NotDone FROM Table1 GROUP BY User_ID ) t1 FULL OUTER JOIN ( -- 统计表2的Done和Not Done数量 SELECT User_ID, COUNT(CASE WHEN Status = 'Done' THEN 1 END) AS Table2Done, COUNT(CASE WHEN Status = 'Not Done' THEN 1 END) AS Table2NotDone FROM Table2 GROUP BY User_ID ) t2 ON t1.User_ID = t2.User_ID;
关键说明:
- 条件聚合:用
CASE WHEN筛选指定状态,配合COUNT统计符合条件的记录数,不符合条件的记录会返回NULL,最终用NVL将空值转为0。 - FULL OUTER JOIN:确保即使某个用户只在其中一张表存在,也能被纳入统计结果。
- COALESCE:处理关联后可能出现的User_ID空值,优先取表1的User_ID,不存在则取表2的。
创建完成后,直接执行SELECT * FROM UserStatusSummary;就能得到目标统计结果。
内容的提问来源于stack exchange,提问作者Akash Mehta
相关产品推荐
相关产品推荐

