【问题标题】:Find and Count employees based on date range根据日期范围查找和统计员工
【发布时间】:2016-05-31 21:27:19
【问题描述】:

希望有人能帮我解决这个问题。

我正在处理一个需要作为结果的查询,

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

我编写了以下代码来获取 Office、SubProgram、ServiceType 和 Total # Of Clients,其预约日期在给定日期范围内且预约状态为“完成”

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

并编写以下代码来获取 Office、SubProgram、ServiceType 和 Total # Of Clients,其开始日期在约会日期后 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)

【问题讨论】:

    标签: sql tsql reporting-services


    【解决方案1】:
    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-24
      相关资源
      最近更新 更多