我有一个查询,我构建的数据从特定位置的多个表中拉回,特定日期范围的计划中的特定约会类型。在返回的数据中,我拉动了服务的提供者,获取服务的成员以及描述有关成员或服务约会的一些字段。信息将由提供者分组。因此,您将在该期间为每个提供商提供多个成员/客户记录。用于获取结果的最新记录的逻辑
什么我现在被要求做的是把这些结果和拉只对这些结果的最新任命。
我的代码如下:
SELECT SCSERVICES.servicecode, SCSERVICES.servicename, SCSESSIONS.scheduleid, SCSERVICES.servicetype, SCSERVICECATEGORIES.servicecategory,
SCSCHEDULES.scheduledatefrom, MEMBERS.lname, MEMBERS.fname, SCSCHEDULES.timestart, SCSCHEDULES.schedulestatus,
CASE WHEN MEMBERS.phone1label = '4' THEN MEMBERS.phone1 WHEN MEMBERS.phone2label = '4' THEN MEMBERS.phone2 WHEN MEMBERS.phone3label = '4'
THEN MEMBERS.phone3 WHEN MEMBERS.phone4label = '4' THEN MEMBERS.phone4 END AS MobilePhone, MEMBERS.scancode,
EMPLOYEES.fname AS trainfname, EMPLOYEES.lname AS trainlname, MEMBERS.lastvisit
FROM SCSESSIONS INNER JOIN
SCSERVICES ON SCSESSIONS.serviceid = SCSERVICES.serviceid INNER JOIN
SCSERVICECATEGORIES ON SCSERVICES.servicecategoryid = SCSERVICECATEGORIES.servicecategoryid INNER JOIN
SCSCHEDULES ON SCSESSIONS.scheduleid = SCSCHEDULES.scheduleid INNER JOIN
MEMBERS ON SCSCHEDULES.memid = MEMBERS.memid INNER JOIN
SCSESSION_PROVIDERS ON SCSESSIONS.sessionid = SCSESSION_PROVIDERS.sessionid INNER JOIN
EMPLOYEES ON SCSESSION_PROVIDERS.employeeid = EMPLOYEES.employeeid
WHERE (SCSERVICECATEGORIES.servicecategory = 'Trainers' OR
SCSERVICECATEGORIES.servicecategory = 'Pilates' OR
SCSERVICECATEGORIES.servicecategory = 'Specialty') AND (SCSERVICES.siteid = @rvSite) AND (CAST(SCSCHEDULES.scheduledatefrom AS DATE) BETWEEN
@rvSessionDate AND @rvSessionDateEnd) AND (SCSCHEDULES.schedulestatus = '1') AND (SCSERVICES.servicecode <> 'BREAK')
结果是这个样子:
'ORDER BY SCSCHEDULES.schedu ledatefrom DESC'和'TOP 1'? – Hackerman
从这里添加一个外部选择并选择您想要的任何内容并在条件中使用。按递减顺序使用,并获得最高1 选择(经柱递减粘贴你上面的查询顺序)顶部1 –
请考虑[如何创建一个最小的,完整的,并且可验证的示例](http://stackoverflow.com /帮助/ MCVE)。 你也许会发现[RANK窗口函数](https://msdn.microsoft.com/en-us/library/ms176102.aspx)有用。 –