Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
rservant
Starting Member
1 Post |
Posted - 2013-05-25 : 01:30:57
|
The query below: SELECT distinct e.Full_Name As Account_Mgr , count (distinct ri.Rn_Interactions_Id) rintd , OP.Total_Count tc FROM [Snival_TEST].[dbo].Opportunity o JOIN ( SELECT opp.Account_Manager_Id , COUNT(*) as total_count FROM Snival_TEST..Opportunity opp INNER JOIN Snival_TEST..Employee e ON opp.Account_Manager_Id = e.Employee_Id INNER JOIN Snival_TEST..Line_of_Business lob ON e.cfLine_of_Business_Id = lob.Line_of_Business_Id INNER JOIN Snival_TEST..Company_Code cc ON e.cfCompany_Code_Id = cc.Company_Code_Id INNER JOIN Snival_TEST..ctService_Center sc ON opp.cfService_Center_Id = sc.ctService_Center_Id WHERE opp.Date >= '01/01/2013' --@STARTDATE AND opp.Date < '03/31/2013' --@ENDDATE AND ISNULL(opp.Completion, 0) = 0 AND ISNULL(opp.NO_QUOTE, '0') IN ('No', '0') AND ISNULL(opp.WARRANTY, 'No') = 'No' AND opp.Status =4 AND lob.Line_of_Business_Name = 'SID' AND sc.Service_Center_Code IN ('rst', q5) GROUP BY opp.Account_Manager_Id ) as OP ON o.Account_Manager_Id = OP.Account_Manager_IdINNER JOIN Snival_TEST.[dbo].Employee e ON o.Account_Manager_Id = e.Employee_Id INNER JOIN Snival_TEST.[dbo].Line_of_Business lob ON e.cfLine_of_Business_Id = lob.Line_of_Business_IdINNER JOIN Snival_TEST.[dbo].ctService_Center sc ON o.cfService_Center_Id = sc.ctService_Center_IdINNER JOIN [Snival_TEST].[dbo].[Company] c ON o.Company_Id = c.Company_IdINNER JOIN [Snival_TEST].[dbo].Rn_Int_Company ric ON ric.Company_id = c.Company_idINNER JOIN [Snival_TEST].[dbo].Rn_Interactions ri ON ric.Rn_Interactions_Id = ri.Rn_Interactions_IdINNER JOIN [Snival_TEST].[dbo].Email em ON em.Rn_Interactions_Id = ri.rn_interactions_id AND em.Assigned_To = e.employee_id WHERE o.Date >= '01/01/2013' --@STARTDATE AND o.Date <= '03/31/2013' --@ENDDATE AND ( ri.Rn_Interaction_Date >= dateadd(day, -30 ,(o.Date) )) AND ri.Rn_Interaction_Date < dateadd(day, 0 ,(o.Date) ) AND ISNULL(o.Completion, 0) = 0 AND ISNULL(o.NO_QUOTE, '0') IN ('No', '0') AND ISNULL(o.WARRANTY, 'No') = 'No' AND o.Status =4 AND e.Active=1 AND lob.Line_of_Business_Name = 'SID' AND sc.Service_Center_Code IN ('rst', q5) Group by e.Full_Name,OP.Total_Count Returns this:Account_Mgr rintd tcName1 2 1Name2 17 4Name3 3 5Name4 23 7Name5 26 7Name6 18 9Name7 5 11Name8 21 13Problem: The problem is I need the query to return Namex when there is a tc count and 0 rintd count. Right now it is only returning a Name if there is a rintd count. The rintd count is filtered on the Assigned_To (line 31). If the rintd is Assigned_To someone other than the Account_Mgr it will not list the tc count.Something like this - em.Assigned_ID <> e.employee_ID then return a 0Here is an example of the return I am looking for:Account_Mgr rintd tcName1 2 1Name2 17 4Name3 3 5Name4 23 7Name5 26 7Name6 18 9Name7 5 11Name8 21 13Name9 0 15 <---0 rintd count with tc countName10 0 4 <---0 rintd count with tc count |
|
stepson
Aged Yak Warrior
545 Posts |
Posted - 2013-05-25 : 03:41:13
|
Hi You have a Inner JoinINNER JOIN [Snival_TEST].[dbo].Rn_Interactions ri ON ric.Rn_Interactions_Id = ri.Rn_Interactions_Id try to change to a LEFT JOINand use for count (distinct ri.Rn_Interactions_Id) rintd a COALESCE like this : COALESCE(count (distinct ri.Rn_Interactions_Id),0) as rintd Ce-am pe mine am si-n dulap, cand ma-mbrac zici ca ma mutsabinWeb |
|
|
stepson
Aged Yak Warrior
545 Posts |
Posted - 2013-05-25 : 08:38:36
|
and another thingWHERE o.Date >= '01/01/2013' --@STARTDATE AND o.Date <= '03/31/2013' --@ENDDATE AND ( ri.Rn_Interaction_Date >= dateadd(day, -30 ,(o.Date) )) AND ri.Rn_Interaction_Date < dateadd(day, 0 ,(o.Date) )... I change to WHERE o.Date >= '01/01/2013' --@STARTDATE AND o.Date <= '03/31/2013' --@ENDDATE AND ( (ri.Rn_Interaction_Date >= dateadd(day, -30 ,(o.Date) )) AND ri.Rn_Interaction_Date < dateadd(day, 0 ,(o.Date)) OR ri.Rn_Interaction_Date IS NULL)... the main idee is to change some INNER JOIN to LEFT JOINand in the WHERE Condition keep in mind that ri.Rn_Interaction_Date could be NullSCe-am pe mine am si-n dulap, cand ma-mbrac zici ca ma mutsabinWeb |
|
|
|
|
|
|
|