2017-02-22 2 views
0

이 사이트는 나에게 많은 SQL 질문에 답변했습니다. 마침내 내 자신에게 물어보고 여기에서 적극적으로 참여하십시오.MIN 날짜 이후 첫 번째 날짜 선택

어쨌든, 나는 Date_Effective와 Date_Lapse가있는 테이블에서 작업하고 있습니다. 클라이언트는 여러 행을 가질 수 있으므로 같은 클라이언트에 대해 Date_Lapse와 다음 Date_Effective 사이의 일 수를 얻으려고합니다. 이 표의 날짜 값은 나중에 날짜로 변환 할 int입니다.

아래 코드는 작동하지 않습니다. 그것은 제가 가입하는 두 번째 가치를 좋아하지 않습니다. 왜 내가 date_effective보다 더 큰 date_effective를 제공 ​​할 수 없습니까? 아래의 항목을 실행하면 최소 유효 날짜보다 큰 유효 날짜가 없으므로 결과가 표시되지 않으므로 결과가 표시되지 않습니다.

SELECT ClientID, c1.Date_Lapse, c2.Date_Effective 
FROM Fact_Episodes c1 
LEFT JOIN (  
      SELECT ClientID, min(Date_Effective) as Date_Effective 
      FROM Fact_Episodes 
      GROUP BY ClientID 
     ) c2 
ON c1.ClientID = c2.ClientID 
AND c2.Date_Effective > c1.Date_Effective 
+1

것은 내가 그것을 나는 그것이으로 파티션 된 행 번호를 통해 작동시킬려고이 방법을 시도하고 있었다 그리고 그 때문에 내가 날짜로 자신을 시도하기 시작하고 나는이 게시 한 후 지금은 생각하면 나는 그것을 얻을 수 있기 전에 나가 당연히 haha ​​감사의 나의 분할에 잘못하고있는 무엇을 밖으로. – Tim

답변

0

왼쪽 결합을 계속 사용하려면이 방법이 유용합니다.

select c1.ClientID, c1.Date_Lapse, min(c2.Date_Effective) as Date_Effective 
from Fact_Episodes c1 
    left join Fact_Episodes c2 
    on c1.ClientID = c2.ClientID 
    and c2.Date_Effective > c1.Date_Effective 
group by c1.ClientId, c1.Date_Lapse 
+0

그게 너무 작동합니다. Uuuugh! 고맙습니다. – Tim

+0

@TimMullender 도와 드리겠습니다! – SqlZim

+0

'c2'에 대한 서브 쿼리는 불필요하며 MySQL에서는 바람직하지 않습니다. –

관련 문제