2017-09-14 1 views
0

을 ORDERID 행 번호 2와 3이 출력이어야합니다. 행 1과 행 2는 동일한 순서 ID와 순서 날짜를 갖지만 시작 날짜는 첫 번째 행보다 늦습니다. 그리고 3 번과 4 번 행과 동일하게 3 번 행을 꺼내야합니다. SQL 서버에 쿼리를 작성하려고합니다. 도움이 필요하시면 알려 주시기 바랍니다. 자세한 내용이 필요하면 알려주십시오. 영어가 불충분 한 정보필터 최근 날짜 가진 중복과 테이블은 내가 다음 표했다

+1

은 *하지 * 태그 스팸 관련이없는 제품를 수행합니다. – Siyual

답변

1

파생 테이블을 사용하는 또 다른 방법입니다.

select 
    t.* 
from 
    YourTable t 
inner join 
(select OrderId, max(StartDate) dt 
from YourTable 
group by OrderId) t2 on t2.dt = t.StartDate and t2.OrderId = t.OrderId 
2

당신은 ROW_NUMBER() 창 기능을 쉽게 할 수 있습니다

;With Cte As 
(
    Select *, 
      Row_Number() Over (Partition By OrderId Order By StartDate Desc) RN 
    From YourTable 
) 
Select * 
From Cte 
Where RN = 1 

하지만 난 StartDate 데이터 유형을 질문. 이것들은 VARCHAR으로 저장되어있는 것 같습니다. 그런 경우, 당신은 DATETIME에 값을 CONVERT해야합니다

;With Cte As 
(
    Select *, 
      Row_Number() Over (Partition By OrderId 
           Order By Convert(DateTime, StartDate) Desc) RN 
    From YourTable 
) 
Select * 
From Cte 
Where RN = 1