我的查询结果中排除了数据存在问题 -
select
D.[Date], D.MonthName, D.WeekOfYear,
E.bu_name, E.emp_mgr, E.emp_sup, E.emp_name, E.emp_jde,
C.Calls, S.sales
from
DATE TABLE As D
join
(Select
cast([start_date] as date) as call_date, [agent_no],
sum(case when [skill_name] like '5700 Sales l%' and [Agent_Time] != '0' then 1 else 0 end) as calls
from
CALL TABLE
group by
cast([start_date] as date), [agent_no]) As C on D.[Date] = C.call_date
join
(Select
[AC#DTE_dt] As sale_date, [EMPJDENUM],
sum(case when [CH]='I' and ([IC]='L' or [IC]='H') and [ITMQTY]>3 and [EMPBUNCOD] in ('5044', '5077', '5169', '5178', '5179', '5186', '5187', '5189', '5190') then 1 else 0 end) as sales
from
SALE TABLE
group by
[AC#DTE_dt], [EMPJDENUM]) As S on D.Date = s.sale_date
join
EMPLOYEE TABLE As E on C.[agent_no] = E.[emp_vcc]
and S.[EMPJDENUM] = E.emp_jde
and S.sale_date between E.start_date and E.end_date
where
D.[Date] = '11/5/2016'
结果
如果调用或销售子查询表与employee表的匹配,如在查询底部的Employee表的连接中定义的那样 - 来自总和的聚合(将返回的情况。如果出于某种原因,在调用或销售子查询中没有要加入的数据,该行被排除。我想要的是结果返回0或null。
有什么想法?
答案 0 :(得分:0)
似乎你只需要指定何时有一个OUTER连接,以及你在哪里进行INNER连接
select
D.[Date], D.MonthName, D.WeekOfYear,
E.bu_name, E.emp_mgr, E.emp_sup, E.emp_name, E.emp_jde,
C.Calls, S.sales
from
DATE TABLE As D
LEFT OUTER join
(Select
cast([start_date] as date) as call_date, [agent_no],
sum(case when [skill_name] like '5700 Sales l%' and [Agent_Time] != '0' then 1 else 0 end) as calls
from
CALL TABLE
group by
cast([start_date] as date), [agent_no]) As C on D.[Date] = C.call_date
LEFT OUTER join
(Select
[AC#DTE_dt] As sale_date, [EMPJDENUM],
sum(case when [CH]='I' and ([IC]='L' or [IC]='H') and [ITMQTY]>3 and [EMPBUNCOD] in ('5044', '5077', '5169', '5178', '5179', '5186', '5187', '5189', '5190') then 1 else 0 end) as sales
from
SALE TABLE
group by
[AC#DTE_dt], [EMPJDENUM]) As S on D.Date = s.sale_date
INNER join
EMPLOYEE TABLE As E on C.[agent_no] = E.[emp_vcc]
and S.[EMPJDENUM] = E.emp_jde
and S.sale_date between E.start_date and E.end_date
where
D.[Date] = '11/5/2016'