2016-08-05 5 views
1

내가 여기에 붙어 있습니다.반송 대가가

나는 각각 날짜 열이있는 두 개의 테이블이 있습니다. 한 테이블은 타임 스탬프 (2016-08-05 09 : 16 : 11.000)를 사용하고 있고 다른 테이블은 타임 스탬프가 있지만 사용하지는 않습니다 (2016-08-05 00 : 00 : 00.000)

이 테이블에 가입하고 싶습니다. MAX 날짜가 일치 할 때만 각 테이블에서 MAX 날짜를 반환합니다. 한 열에 최근 날짜가 있으면 두 열 모두 최대 날짜가 일치 할 때 결과를 표시합니다.

타임 스탬프를 제거하기 위해 MAX와 CAST를 사용하고 있지만 각 테이블에서 MAX 날짜 만 되돌릴 수 있습니다. 두 테이블 모두 최대 날짜가 같지 않은 동일한 날짜를 표시하지 않습니다.

여기

SELECT A.ID, 
CAST(A.DATE as date), 
CAST(B.DATE as date), 
B.NUMBER, 
A.VALUE, 

FROM TABLE1 A 
JOIN TABLE 2 B 
ON A.ID = B.ID 

Where b.DATE=(SELECT MAX(DATE) 
FROM TABLE B 
WHERE ID = b.ID) 

Where A.DATE=(SELECT MAX(DATE) 
FROM TABLE A 
WHERE ID = b.ID) 

내가 내 결과 이런 식으로 뭔가되고 싶은 내 예입니다 :

ID | (no column name)| (no column name) | Number| Value | 
1 | 2016-08-04  | 2016-08-04  | 42 | 77 | 
2 | 2016-08-04  | 2016-08-04  | 43 | 40 | 
3 | 2016-08-04  | 2016-08-04  | 44 | 42 | 

그러나이 같은 최대 날짜가없는 경우,이

ID | (no column name)| (no column name) | Number| Value | 
1 | 2016-08-04  | 2016-08-05  | 42 | 47 | 
2 | 2016-08-04  | 2016-08-05  | 43 | 43 | 
3 | 2016-08-04  | 2016-08-05  | 44 | 44 | 
를 얻을 수

나는 분명히 나 자신을 분명히했다. 어떤 도움을 주시면 감사하겠습니다. 여기

+0

내가 따라 잘 모르겠어요 .. 최대 날짜가 표시하려는 않는 것을 동일하지 않을 때? – kbball

+0

항상 같은 날짜의 최대 날짜를 표시하십시오. 같지 않으면 각 열이 일치하는 이전 시간을 표시하십시오. – jellyjones89

+0

그래서 MAX (날짜)에 테이블을 조인하고 싶습니까? – StingyJack

답변

2

하나의 옵션은 row_number을 사용하고 :

SELECT * 
FROM (
    SELECT A.ID, 
      CAST(A.DATE as date), 
      CAST(B.DATE as date), 
      B.NUMBER, 
      A.VALUE, 
      ROW_NUMBER() OVER (PARTITION BY A.ID ORDER BY A.Date DESC) rn 
    FROM TABLE1 A 
      JOIN TABLE 2 B ON A.ID = B.ID 
         AND CAST(A.DATE as date) = CAST(B.DATE as date) 
) t 
WHERE rn = 1 
+0

그게 내가 필요한거야! 무리 감사 – jellyjones89