【发布时间】:2018-08-20 14:56:54
【问题描述】:
想就我目前正在努力解决的一种情况从大家那里获得一些意见。下面是一个问题陈述
我有表 A、B、C
A 有下面的列 用户|修改日期| wokred_on A | ..一些与用户操作相关的更多内容
B 有列 用户 |修改日期 |工作于 B | ..其他一些列
C 有列 用户 |修改日期 |从事过 C| ..其他一些列
这些表除了用户之外没有任何直接关系。
我们必须从这些表中提取用户在给定日期之间的数据,以及他在给定日期范围内所做的计数操作或工作吗?
我在这里的挣扎是,如果选择的日期范围不在其他列中,那么每个表都有自己的日期修改,但我仍然需要提取数据,因为用户在日期之间对其进行了处理。
是否可以选择这些日期并将其放在一列中,以便可以将其放在 where 子句中并通过外部连接来提取其他记录?
对于这个大问题陈述感到抱歉。任何建议都非常感谢
下面是一个用例。只是扩展 littlefoot 给出的假设
首先,测试用例:
SQL> create table a (cuser varchar2(10), modified_date date,action );
varchar2 (10) ) 表已创建。
SQL> create table b (
Table created.cuser varchar2(10), modified_date date,action
varchar2 (10) );
SQL> create table c (cuser varchar2(10), modified_date date,action
varchar2 (10) ));
Table created.
SQL> insert into a values ('lf', date '2018-05-01', 'issue raised');
1 row created.
SQL> insert into a values ('mc', date '2018-05-01', 'issue raised ');
1 row created.
SQL> insert into b values ('lf', date '2018-05-01',issue raised');
1 row created.
SQL> insert into b values ('lf', date '2018-05-01','issue resolved');
1 row created.
SQL> insert into c values ('if', date '2018-05-28',' issue resolved');
1 row created.
SQL> insert into c values ('mc', date '2018-05-13','issue raised');
1 row created.
SQL> insert into c values ('mc', date '2018-05-13','issue resolved');
1 row created.
SQL> alter session set nls_date_format = 'yyyy-mm-dd';
Session altered.
SQL> select * from a;
CUSER MODIFIED_D. ACTION
---------- ----------
lf 2018-05-01 issue raised
mc 2018-05-01 issue raised
SQL> select * from b;
CUSER MODIFIED_D ACTION
---------- ----------. ______________
lf 2018-05-01 issue raised
lf 2018-05-01. issue resolve
SQL> select * from c;
CUSER MODIFIED_D. ACTION
---------- ----------
If 2018-05-28. issue resolve
mc 2018-05-13. issue raised
mc 2018-05-13. issue resolve
CUSER DATE CNT_ISSUE_RAISED CNT_ISSUE_RESOLVED
-------- ------- ---------------- -------------------
如果 2018-05-01 2 1
lf 2018-05-28 0 1
mc 2018-05-01 0 1
MC 2018-05-13 1 1
【问题讨论】:
-
你能给出示例数据和你希望达到的结果吗?