나쁜 레코드를 포함하여 위치 (BadRec = 1)와 그 이전 3 레코드 (최대)에 대한 잘못된 레코드를 가져 오는 아래 표를 기반으로 쿼리를 작성하는 데 어려움이 있습니다.SQL 쿼리를 사용하여 이전 레코드를 찾습니다
TranDate Location BadRec
======================= ======== ======
2010-08-25 00:00:00.000 STN-2 0
2010-08-26 00:00:00.000 STN-2 1
2010-08-27 00:00:00.000 STN-1 1
2010-08-28 00:00:00.000 STN-1 0
2010-08-28 00:00:00.000 STN-2 1
2010-08-29 00:00:00.000 STN-1 0
2010-08-30 00:00:00.000 STN-1 1
2010-08-31 00:00:00.000 STN-1 0
2010-09-01 00:00:00.000 STN-1 0
여기는 예상되는 출력입니다.
TranDate Location BadRec comments
======================= ======== ====== ========
2010-08-30 00:00:00.000 STN-1 1 <- Bad record on STN-1
2010-08-29 00:00:00.000 STN-1 0 <- First Previous record
2010-08-28 00:00:00.000 STN-1 0 <- Second Previous record
2010-08-27 00:00:00.000 STN-1 1 <- Third Previous record (Previous include bad rec)
2010-08-28 00:00:00.000 STN-2 1 <- Bad record on STN-2
2010-08-26 00:00:00.000 STN-2 1
2010-08-25 00:00:00.000 STN-2 0
2010-08-27 00:00:00.000 STN-1 1 <- Bad record on STN-1,No previous record for this
2010-08-26 00:00:00.000 STN-2 1 <- Bad record on STN-2
2010-08-25 00:00:00.000 STN-2 0
단일 쿼리를 사용하여 이것을 작성할 수 있습니까 ?? CTE 사용하기 ?? 이상 (파티션 ...) ?? 어떤 도움을 주셔서 감사합니다. 참고 : SQL 2005 시스템을 사용하고 있습니다.
예상 출력에서'2010-08-27 00 : 00 : 00.000 STN-1 1'이 두 번 반복되는 이유는 무엇입니까? – Chandu
2010-08-27 00 : 00 : 00.000 STN-1 1이 2010-08-30에서 첫 번째 행으로 표시되고 두 번째가 BadRec 행으로 표시됩니다. – bobs
감사합니다. 그게 정확히 내가 찾고 있던거야! 감사합니다 – user173552