我有一個查詢,我構建的數據從特定位置的多個表中拉回,特定日期範圍的計劃中的特定約會類型。在返回的數據中,我拉動了服務的提供者,獲取服務的成員以及描述有關成員或服務約會的一些字段。信息將由提供者分組。因此,您將在該期間爲每個提供商提供多個成員/客戶記錄。用於獲取結果的最新記錄的邏輯
什麼我現在被要求做的是把這些結果和拉只對這些結果的最新任命。
我的代碼如下:
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)有用。 –