SQL-запрос для поиска предыдущих записей - PullRequest
1 голос
/ 05 августа 2011

Я изо всех сил пытаюсь написать запрос, основанный на таблице ниже, которая должна получить плохие записи для местоположения (где BadRec = 1), а также предыдущие 3 записи (макс.) В этом местоположении, включая плохие записи;

Вот ожидаемый результат Put;

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;

1 Ответ

1 голос
/ 05 августа 2011

Делает ли это то, что вы хотите?

SELECT TranDate, Location, BadRec
FROM
    (
    SELECT pr.TranDate, pr.Location, pr.BadRec,
        ROW_NUMBER() OVER (PARTITION BY r.TranDate ORDER BY pr.TranDate DESC) AS SEQUENCE
    FROM Records r
    JOIN Records pr ON r.Location = pr.Location
                    AND r.TranDate >= pr.TranDate
    WHERE r.BadRec = 1
    ) x
WHERE SEQUENCE <= 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...