2016-12-02 46 views
1

我正在尋找顯示SQL表中某些行的基於後面的行條目稱爲部分。 請參閱下面的列表。我想顯示行中沒有爲每個特定模型和零件的後續行中的類0。顯示基於其他行標準的行

Log | SourceTime| Class| model | part 
----+-----------+------+-------+----- 
614 | 14:14  | 0 | FORD | right wing 
613 | 14:13  | 1 | FORD | right wing 
612 | 14:12  | 1 | TOYOTA| left wing 
611 | 14:11  | 0 | TOYOTA| right wing 
610 | 14:10  | 1 | TOYOTA| right wing 
609 | 14:09  | 0 | OPEL | right lamp 
608 | 14:08  | 1 | OPEL | right lamp 
607 | 14:07  | 1 | OPEL | back right wheel 
606 | 14:06  | 0 | FORD | right wheel 
605 | 14:05  | 1 | FORD | right wheel 

這2行應該顯示

612 | 14:12  | 1 | TOYOTA| left wing 
607 | 14:07  | 1 | OPEL | back right wheel 

回答

1

試試這個:在同一個表的多個CTE可以解決你的問題

WITH t1 AS(

     SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY LOG ORDER BY LOG) RN 
     FROM TableName 
), 
t2 AS(

     SELECT *, 
       ROW_NUMBER() OVER (PARTITION BY LOG ORDER BY LOG) RN 
     FROM TableName 
) 
SELECT t1.* 
FROM t1 
WHERE Class <> 0 AND 
     NOT EXISTS (SELECT 1 
        FROM t2 
        WHERE t1.Model=t2.Model AND 
         t2.Class = 0 AND 
         t2.RN > t1.RN) 
+0

它讓我在選擇T1錯誤。 *表示「列前綴't1'與查詢中使用的表名或別名不匹配」 – user1959064

+0

已更新的答案。在t1.Model = t2.Model中有一個額外的不必要的'',' –

+0

它給出錯誤。它表示t2.Model「多部分標識符't2.Model'不能被綁定。對於t2.Class和t2是相同的.RN – user1959064