2016-03-02 49 views
0

我想拉0值,但是我的查询不允许0值,并且需要很长时间才能执行。返回0每个用户的值

这里是我的代码:

select a.Owner_Id, 
b.Name as KPI, 
B.Record_Type, 
B.Resource_Id, 
C.Display_Name, 
count(*) as Max 

from amgr_appointments A 
right outer join AMGR_Resources B on A.Owner_Id = b.Resource_Id 
right outer JOIN ADMN_User_Details AS C ON A.Creator_Id=C.User_Id 

where b.Resource_Id in ('ROE534B758E', 'R0E42A431B5', 'R0E42A4BB3F','R0E42A3E514','R0E42A44D19', 'R0E42A37FBB') 
and b.Record_Type = 3 
and a.Creator_Id In('AMCKENZIE','ASARAK', 'JMALAN') 
and A.App_Date between '2016-02-29'and '2016-03-29' 
Group by a.Owner_Id, a.Creator_Id, b.Name, B.Record_Type, B.Resource_Id, c.Display_Name 

我得到如下结果:

amckenzie 1 Pop-in 
ASARAK 2 Pop-in 

不过,我想这样的结果,包括即使该值是0

amckenzie 1 Pop-in 
ASARAK 2 Pop-in 
JMALAN 0 Pop-in 
用户

请帮助我,告诉我哪里会出错。我曾尝试不同的连接然而在查询运行时间过长

+2

的样本数据将真正帮助,对此你得到这个输出。另外提及你将使用的DB /版本 – Utsav

+0

我想你想要显示的数量(*)可以是0.如果是这样,你可以尝试IFNULL(count(*),0)。 – Chuck

+0

IFNULL(count(),0)。对于所有行显示0,如果用户没有约会,我想要返回值0 – Stix

回答

0

尝试下面的所有表

SELECT a.Owner_Id, 
      b.Name as KPI, 
      B.Record_Type, 
      B.Resource_Id, 
      C.Display_Name, 
      count(*) as Max 
    FROM amgr_appointments A 
    RIGHT OUTER JOIN AMGR_Resources B 
     ON (A.Owner_Id = b.Resource_Id 
     AND a.Creator_Id In('AMCKENZIE','ASARAK', 'JMALAN') 
     AND A.App_Date BETWEEN '2016-02-29'AND '2016-03-29') 
    RIGHT OUTER JOIN ADMN_User_Details AS C 
     ON (A.Creator_Id = C.User_Id) 
    WHERE b.Resource_Id in ('ROE534B758E', 'R0E42A431B5', 'R0E42A4BB3F','R0E42A3E514','R0E42A44D19', 'R0E42A37FBB') 
     AND b.Record_Type = 3 
    GROUP BY a.Owner_Id, a.Creator_Id, b.Name, B.Record_Type, B.Resource_Id, c.Display_Name