讨论背景:
(新用户)通过表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