2017-12-15 12 views
0

내가 물었다 된 유사한 알고 이전에 대답하지만 몇 시간에도 불구하고 아직도 각 증권 입찰 관련 입찰자의 최근 로그인 절차를 선택 들어

Select StockBids.* along with the 
MOST RECENT MemberSignIns.Lat/Long 
from the following two tables 
wWhere StockBids.MemberID = 'MSFT' 

는 테스트 데이터

을위한 http://sqlfiddle.com/#!6/7b9c7/2를 참조하는 방법을 알아낼 수 없습니다

전체 설명은 StockBids.ID = 24, 26 28 행이어야하며 MemberID 4는 두 StockBid.ID = 24 and 28을 제출 했으므로이 두 행의 최신 /에서 파생 된 40.692259/-73.766641의 Lat/Long 값을 가져야합니다.

StockBids 
ID MemberID EntityAbbrev BidPrice BidShares 
24 4   MSFT   7.43  10 
25 4   AAPL   7.43  10 
26 5   MSFT   7.36  20 
27 6   AAPL   7.29  30 
28 4   MSFT   7.22  40 

내가 ROW_NUMBER를 사용하여 각 행에 추가 번호를 추가 StockBids.MemberID = MemberSignIns.MemberID의 모든 다음

SELECT s.*,m.* 
FROM 
    (
    SELECT *,ROW_NUMBER()OVER(PARTITION BY MemberID ORDER BY ID) RowNum 
    FROM StockBids 
) s 
JOIN 
    (
    SELECT *,ROW_NUMBER()OVER(PARTITION BY MemberID ORDER BY ID) RowNum 
    FROM MemberSignIns 
) m 
ON s.MemberID=m.MemberID AND s.RowNum=m.RowNum 

먼저 사용

MemberSignIns 
ID MemberID UTC    Lat  Long 
11 4  6/23/17 16:23  40.736999 -73.875247 
12 4  6/23/17 16:32  40.782117 -73.980739 
13 5  6/23/17 16:40  40.643339 -73.977714 
14 6  6/23/17 16:48  40.760262 -73.993287 
15 7  6/23/17 16:56  40.722414 -73.992452 
16 4  6/23/17 17:04  40.692259 -73.766641 
+0

은 또한 당신의 예상 결과 – TheGameiswar

답변

2

시도에 합류했다. 행이 주문하고 회원들에 의해 파티션을 추가하기위한 두 개의 하위 쿼리

SELECT *,ROW_NUMBER()OVER(PARTITION BY MemberID ORDER BY ID) RowNum 
FROM StockBids 

SELECT *,ROW_NUMBER()OVER(PARTITION BY MemberID ORDER BY ID) RowNum 
FROM MemberSignIns 

를 참조하십시오 나는 ID을 사용했다.

그런 다음 JOIN을 사용하여 MemberID과 추가 번호를 사용합니다.

하지만 처음에 나는 당신을 오해했을 것입니다. 당신이 MemberSignIns에서 LatLong 마지막으로 사용하려는 경우 OUTER APPLY

SELECT s.*,l.Lat,l.Long,l.TestID 
FROM StockBids s 
OUTER APPLY 
    (
    SELECT TOP 1 m.Lat,m.Long,m.ID TestID 
    FROM MemberSignIns m 
    WHERE m.MemberID=s.MemberID 
    ORDER BY m.ID DESC -- or ORDER BY m.UTC DESC - if ID isn't consistent with UTC. 
) l 
+0

추측을 공유하려고 사용할 수있는 "가장 최근"UTC가 아닌 ID에 의해 순서를 의미한다. 하지만 그렇지 않으면 나는 이것에 동의한다. 외부 지원은 저에게 발생한 첫 번째 생각이었습니다. – SMor

+0

'UTC'에 멤버가 중복되면'ORDER BY m.UTC, m.ID'를 사용할 수 있다고 생각합니다. 행운을 빕니다! – Leran2002