讨论背景:
(新用户)通过表A获取的记录集,如下:1 2012-11-1
3 2012-11-2
8 2012-11-5
(老用户)通过表B获取的记录集,如下:
5 2012-11-1
3 2012-11-2
我想将这两个结果集合并为一个结果集。显示的结果如下:
日期 新用户 老用户
2012-11-1 1 5
2012-11-2 3 3
2012-11-5 8 0
如果不能合并。只能在查找注册用户的语句循环中。每次都要通过当前的日期来再做一次查询(统计老用户)。这样的效率也太低。
讨论话题:如何合并两个查询的结果集的数据?
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> CREATE TABLE A (rid number,rdate date);
表已创建。
SQL> INSERT INTO A VALUES (1,'01-11月-12');
已创建 1 行。
SQL> INSERT INTO A VALUES (3,'02-11月-12');
已创建 1 行。
SQL> INSERT INTO A VALUES (8,'05-11月-12');
已创建 1 行。
SQL> commit;
提交完成。
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> CREATE TABLE B (rid number,rdate date);
表已创建。
SQL> INSERT INTO B VALUES (5,'01-11月-12');
已创建 1 行。
SQL> INSERT INTO B VALUES (3,'02-11月-12');
已创建 1 行。
SQL> commit;
提交完成。
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> SELECT * FROM a;
RID RDATE
---------- --------------
1 01-11月-12
3 02-11月-12
8 05-11月-12
SQL> SELECT * FROM b;
RID RDATE
---------- --------------
5 01-11月-12
3 02-11月-12
----------------------------------------------------------------------------------------------------------------------------------------------------
SQL> SELECT a.rdate "日期", a.rid "新用户",NVL(b.rid,0) "老用户" FROM a FULL OUTER JOIN b ON a.rdate=b.rdate;
日期 新用户 老用户
-------------- ---------- ----------
01-11月-12 1
5
02-11月-12 3
3
05-11月-12 8
0
本文介绍如何使用SQL FULL OUTER JOIN操作合并两个不同的数据表A和B,以实现对新老用户数据的有效整合。通过具体示例展示了如何处理日期匹配的问题,并确保即使在日期不完全对应的情况下也能正确地展示所有数据。
2954

被折叠的 条评论
为什么被折叠?



