2014-10-29 39 views
0

我有3個表像SQL,許多得到的只是(一行)最近很多關於船舶

A. (Aid,person) 

B. (Bid,event,InsertDate) 

C. (Cid,Aid,Bid) 

現在我需要從B.InsertDate遞減得到最後的近期活動基地加入B.event和(最後每個人的事件) 我試過加入但是這使得多個和B.event。 你能指導我嗎?

更新:

現在我只需添加另一個LASTUPDATE列人表和更新,對於在事件表中的每個插入和提出,等於InsertDate。所以我的查詢是這樣的:

SELECT 
    A.person, B.event 
    from tableA A 
    join tableC C 
    on A.Aid = C.Aid 
    join tableB B 
    on B.Bid = C.Bid and B.InsertDate = A.lastUpdate 

回答

2

試試這個:

SELECT 
    A.person, 
    B.event, 
    MAX(B.InsertDate) 
FROM 
    A 
    JOIN C ON A.Aid = C.Aid 
    JOIN B ON B.Bid = C.Bid 
GROUP BY 
    A.person, 
    B.event 
+0

我試過,但還是給我複製的人! – Ostad 2014-10-29 03:28:18

1

可能是一些LYK這

WITH cte 
    AS (SELECT Row_number() OVER (partition BY person ORDER BY B.InsertDate DESC) rn, 
       A.person, 
       B.event, 
       B.InsertDate     AS LastEventDate 
     FROM B 
       JOIN (SELECT B.event, 
          Max(B.InsertDate) InsertDate 
         FROM B 
         GROUP BY B.event) sub 
        ON sub.event = B.event 
        AND sub.InsertDate = b.InsertDate 
       JOIN A 
        ON A.Bid = C.Bid 
       JOIN C 
        ON B.Bid = C.Bid) 
SELECT * 
FROM cte 
WHERE rn = 1 
+0

仍然重複的人! :D 無論如何感謝 – Ostad 2014-10-29 04:09:11

+0

@Ostad - 現在檢查 – 2014-10-29 04:23:18