2014-03-31 113 views
1

我很難搞清楚這是一個日期/時間問題。 我的表(服務)得到如下結構:SQL查詢最大id最大日期最大時間(sap maxdb 7.8)

ShopID | ServiceID | Datestart | Timeend | StatusID 
1  |  100 | 2014-03-03 | 09:16:22 | 15 
1  |  200 | 2014-03-03 | 10:16:22 | 15 
2  |  300 | 2014-03-05 | 18:16:00 | 15 
2  |  400 | 2014-03-05 | 15:30:48 | 0 
3  |  500 | 2014-03-07 | 09:16:22 | 15 
4  |  550 | 2014-03-07 | 09:50:10 | 15 

的目標是讓每個ShopID 2014年:

Basicaly最近的服務ID,其可以是最高的(因此最新) ServiceID或具有最新Datestart和最新Timeend的ServiceID。 也都結果需要與StatusID = 15

這是我一直在使用什麼到現在爲止:

select max(ss.id), ss.shopid from service ss, 
(select shopid, max(datestart) as datestart 
from service s 
where 
     statusid = 15 and 
     datestart between '2014-01-01' and '2014-12-31' 
     group by shopid) x 
     where ss.shopid=x.shopid and ss.statusid = 15 and ss.datestart=x.datestart group by ss.shopid 

這確實罰款最近的服務ID和日期,但我不能讓TimeEnd進去。 希望任何人都可以提供幫助。

回答

0

我只是包含在子查詢TimeEnd柱以及聯接:

SELECT 
    MAX(ss.id), 
    ss.shopid 
FROM 
    service ss, 
    (
    SELECT 
     shopid, 
     max(DATESTART) as DATESTART, 
     MAX(TIMEEND) as TIMEEND 
    FROM 
     service s 
    WHERE 
     statusid = 15 
    AND datestart BETWEEN '2014-01-01' AND '2014-12-31' 
    GROUP BY 
     SHOPID 
) 
    X 
WHERE 
    ss.shopid  =x.shopid 
AND ss.statusid = 15 
AND SS.DATESTART=X.DATESTART 
AND SS.TIMEEND=X.TIMEEND 
GROUP BY 
    ss.shopid;