이전에 답변을 받았지만 찾을 수 없었을 것입니다.주어진 날짜의 상태를 가져 오기위한 SQL 쿼리
몇 주마다 상태가 변경되는 항목 테이블이 있습니다. 나는 임의의 날을보고 각 지위에 얼마나 많은 물건이 있었는지 알아 내고 싶다. 예를 들어
:
tbl_ItemHistory
ItemID
StatusChangeDate
StatusID
샘플 데이터 :
1001, 1/1/2010, 1
1001, 4/5/2010, 2
1001, 6/15/2010, 4
1002, 4/1/2010, 1
1002, 6/1/2010, 3
...
그래서 나는 많은 항목이 주어진 일에 대한 각 상태에 있었던 방법을 알아낼 필요가있다. 그래서 2010 년 5 월 1 일에 상태 2에는 항목 1 개 (1001)가 있고 상태 1 (1002)에는 항목 1 개가있었습니다.
이 항목은 상태가 자주 변경되지 않으므로 매일 밤마다 모든 항목과 행을 포함하는 캐시 된 테이블을 만들 수 있습니다.
select ih.*
from (select ih.*,
row_number() over (partition by itemId order by StatusChangeDate desc) as seqnum
from tbl_ItemHistory ih
where StatusChangeDate <= @YOURDATEGOESHERE
) ih
where seqnum = 1
아이디어 : 그 또는
하지만 내가 임의의 일을 위해 SQL 서버 2008R2
[무엇을 시도 했습니까?] (http://whathaveyoutried.com)? 어떤 쿼리가 작동하지 않았습니까? 정확히 이것에 대해서 당신은 붙어 있습니까? – Oded
첫 번째 질문은 접근 방식입니다. 결과를 다른 테이블에 캐시해야합니까? 그렇다면 어떻게해야합니까? 나는 SQL의 초보자입니다 – user46372