J'ai du mal à écrire une requête basée sur le tableau ci-dessous qui devrait obtenir des enregistrements incorrects pour un emplacement (où BadRec = 1) et aussi 3 enregistrements précédents (Max) sur cet emplacement incluant les mauvais enregistrements;Requête SQL pour trouver les enregistrements précédents
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
Voici les attendus eteint;
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
Est-ce possible d'écrire ceci en utilisant une seule requête ?? En utilisant CTE ?? Plus (partition ...) ?? Toute aide est bien appréciée. Remarque: je suis sur une machine SQL 2005;
Pourquoi '2010-08-27 00: 00: 00.000 STN-1 1' répète-t-il deux fois dans la sortie attendue? – Chandu
Je pense que «2010-08-27 00: 00: 00.000 STN-1 1» apparaît d'abord comme une ligne précédente pour 2010-08-30 et la seconde comme une ligne BadRec. – bobs
Merci un bobs !! C'était exactement ce que je cherchais! Appréciez vous aider – user173552