2016-05-31 43 views
0

我希望有人能帮我解决此问题。根据日期范围查找并计算员工

我在这需要以下结果查询工作,

  • 办公室,
  • 子程序,
  • 服务类型,
  • 总#的客户,其预约日期落在给定的范围之间 约会状态为“已完成”,
  • 开始日期在约会5日内的客户总数 约会

我写了下面的代码来获取Office,子程序,服务类型和总#的客户,其预约日期指定日期范围内,其预约状态为“已完成”

SELECT 
    fa.new_sitename AS Office 
    ,fs.new_subprogramname AS Subprogram 
    ,Fsrv.NAME AS Servicetype 
    ,COUNT(fa.new_clientidname) AS Total#OfClients 
FROM 
    Firstappointment fa 
INNER JOIN 
    FirstServiceAppointment fs 
ON 
    fa.new_appointment id = fs.new_appointment lookup 
INNER JOIN 
    FirstService Fsrv 
ON 
    fa.new_service = Fsrv.serviceid 
WHERE 
    fs.new_visittypename LIKE 'First' 
    AND fs.statuscodename LIKE 'done' 
    AND fa.createdon BETWEEN '05/18/2016' AND '05/30/2016' 
GROUP BY 
    fa.new_sitename 
    ,fs.new_subprogramname 
    ,Fsrv.NAME 

并且写了下面的代码获取办公室,子程序,服务类型和总#客户的开始日期内预约日期为5天现在

SELECT 
    COUNT(fa.new_clientidname) AS "Total # of Clients receiving FV within 5 days" 
    ,fa.new_sitename AS Office 
    ,fs.new_subprogramname AS Subprogram 
    ,Fsrv.NAME AS Servicetype 
FROM 
    Firstappointment fa 
INNER JOIN 
    FirstServiceAppointment fs 
ON 
    fa.new_appointmentid = fs.new_appointmentlookup 
INNER JOIN 
    FirstService Fsrv 
ON 
    fa.new_service = Fsrv.serviceid 
WHERE 
    fs.new_visittypename LIKE 'first' 
    AND fs.statuscodename LIKE 'done' 
    AND fa.createdon BETWEEN '05/18/2016' AND '05/30/2016' 
    AND DATEDIFF(DAY, cast(fa.createdon AS DATE), cast(fs.scheduledstart AS DATE)) <= 5 
GROUP BY 
    fa.new_sitename 
    ,fs.new_subprogramname 
    ,Fsrv.NAME 

,如何将这两个结果集合合并成一个,并使其东西像

Office, Subprogram, ServiceType, Total#OfClients (From First Query), Total # of Clients receiving FV within 5 days" (From Second Query) 

回答

0
SELECT Distinct 
     fa.new_sitename AS Office, 
     fs.new_subprogramname As Subprogram, 
     Fsrv.name AS Servicetype, 
    Count(fa.new_clientidname) As Total#OfClients, 
    count(fa1.new_clientidname) as "Total # of Clients receiving FV within 5 days" 
FROM FirstServiceAppointment fs left outer join Firstappointment fa 
on fs.new_appointmentlookup = fa.new_appointmentid 
left outer join Firstappointment fa1 
on fs.new_appointmentlookup = fa1.new_appointmentid 
AND DATEDIFF(DAY,cast(fa.createdon AS Date),cast(fs.scheduledstart AS Date)) >=5 
join FirstService Fsrv 
on fa.new_service=Fsrv.serviceid or fa1.new_service=Fsrv.serviceid 
Where 
fs.new_visittypename like 'first' 
        AND fs.statuscodename like 'done' 
        AND fa.createdon BETWEEN '05/18/2016' AND '05/30/2016' 
      AND fa1.createdon BETWEEN '05/18/2016' AND '05/30/2016' 
group by fa.new_sitename, fs.new_subprogramname,Fsrv.name