【发布时间】:2014-05-07 15:00:51
【问题描述】:
我需要创建一个用于生成报告的视图。该视图将获取一个用户表,并根据用户 ID 和订单 ID 将其与订单表和工作流表连接起来。视图很复杂,因为我需要多次加入订单表,因为我需要根据几个不同的订单状态加入。
我需要能够计算每个用户处于未结状态的订单数量、状态为“已退回”、“暂停”或“已退回 - 故障”的订单数量以及统计每个用户在各区的订单数。
将所有数据放在一起很好,我刚刚为每个计数要求设置了一个简单的选择,如下所示。我的问题是,这将返回表中所有记录的计数,我需要能够将其限制为在特定时间内将参数化的订单。
我需要一些帮助来获得对连接的时间限制。
select u.FIRST_NAME || ' ' || u.LAST_NAME as ASSIGNED_TO,
u.ID,
j4.TOTAL_AREA1,
j1.total,
j2.TOTAL_OPENED,
j3.TOTAL_RETURNED
from users u
left outer join
(
select u1.FIRST_NAME || ' ' || u1.LAST_NAME as ASSIGNED_TO,
u1.ID,
COUNT(o1.ORDER_KEY) as total
from users u1,
orders o1,
WORKFLOW_WORKITEM ww1
where
o1.ORDER_KEY = ww1.ENTITY_KEY_NUM
AND ww1.ENTITY_NAME = 'Order'
AND ww1.ASSIGNED_TO = U1.ID
GROUP BY u1.FIRST_NAME,
u1.LAST_NAME,
u1.id) j1
on
j1.ID = u.ID
left outer join
(
select u1.FIRST_NAME || ' ' || u1.LAST_NAME as ASSIGNED_TO,
u1.ID,
COUNT(o1.ORDER_KEY) as TOTAL_OPENED
from users u1,
ORDERS o1,
WORKFLOW_WORKITEM ww1
where
o1.CASE_KEY = ww1.ENTITY_KEY_NUM
AND ww1.ENTITY_NAME = 'Order'
AND ww1.ASSIGNED_TO = U1.ID
AND ww1.STATUS_CODE='S_ORD_CA_021'
GROUP BY u1.FIRST_NAME,
u1.LAST_NAME,
u1.id) j2
on
j2.ID = u.ID
left outer join
(
select u1.FIRST_NAME || ' ' || u1.LAST_NAME as ASSIGNED_TO,
u1.ID,
COUNT(o1.ORDER_KEY) as TOTAL_RETURNED
from users u1,
ORDERS o1,
WORKFLOW_WORKITEM ww1
where
o1.ORDER_KEY = ww1.ENTITY_KEY_NUM
AND ww1.ENTITY_NAME = 'Order'
AND ww1.ASSIGNED_TO = U1.ID
AND ww1.STATUS_CODE in ('S_ORD_CA_015', 'S_ORD_CA_016', 'S_ORD_CA_017','S_ORD_CA_018')
GROUP BY u1.FIRST_NAME,
u1.LAST_NAME,
u1.id) j3
on
j3.ID = u.ID
left outer join
(
select
u1.ID,
COUNT(o1.ORDER_KEY) as TOTAL_AREA1
from users u1,
ORDERS o1,
WORKFLOW_WORKITEM ww1,
domains dm
where
o1.ORDER_KEY = ww1.ENTITY_KEY_NUM
AND ww1.ENTITY_NAME = 'Order'
AND ww1.ASSIGNED_TO = U1.ID
and ww1.DOMAIN_ID=dm.ID
AND dm.CODE='AREA1'
GROUP BY
u1.FIRST_NAME,
u1.LAST_NAME,
u1.id,
ww1.DOMAIN_ID,
dm.DESCRIPTION
) j4
on
j4.ID = u.ID
【问题讨论】:
标签: sql oracle join oracle11g parameter-passing