1
我很努力地写一个基于下面的表的查询应该得到一个位置(其中BadRec = 1)的Bad记录以及该位置上的前3个记录(Max),包括坏记录;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