2014-01-15 38 views
0

我有一個記錄表(TABLE_B),它通過觸發器從主表(TABLE_A)更新。只要插入/更新TABLE_A上的任何字段,觸發器都會運行。我們需要拉的一份報告指出,僅顯示在表-B更新的子集 - 即用戶只有在領域感興趣:從結果集中刪除半重複行

ID 
STAGE 
STATUS 
UPDATE_DATE 

我需要從結果集中刪除連續重複,即,假設下面的條目表-B存在:

+----+-----+------+-----------+ 
|ID |STAGE|STATUS|UPDATE_DATE| 
+----+-----+------+-----------+ 
|4567|7 |9  |2012-12-25 | 
+----+-----+------+-----------+ 
|4567|4 |2  |2012-12-24 | 
+----+-----+------+-----------+ 
|4567|4 |3  |2012-12-23 | 
+----+-----+------+-----------+ 
|4567|4 |2  |2012-12-22 | 
+----+-----+------+-----------+ 
|4567|4 |2  |2012-12-21 | 
+----+-----+------+-----------+ 
|4567|4 |3  |2012-12-20 | 
+----+-----+------+-----------+ 
|4567|4 |2  |2012-12-19 | 
+----+-----+------+-----------+ 

從底部,我需要提取行1,2,3,5,6,7 - 省略行4只:我在列2項3 & 4,其是重複(由於TABLE_A中某個其他字段的更新,第4行已經觸發到TABLE_B中,但是它的階段/狀態組合沒有改變,因此可以忽略它)。

因此,當我發現結果集中的下一行是當前行的重複行(只有下一行)時,我該如何將它從結果集中刪除,或者忽略在結果集中選擇它第一名。我將使用存儲過程執行操作 - 將光標包含在此中?

Sybase 12.5,儘管語法非常接近SQL Server。

+0

是否Sybase的版本支持'鉛()'/'滯後( )'功能? –

+0

不確定戈登 - 但我想我有基於另一個線程的答案。短期發帖。 –

回答

0

看了一下類似的問題上StackOF:

http://stackoverflow.com/questions/19774273/remove-duplicates-in-sql-result-set-of-one-table 

我覺得這個答案:

select id, status, stage, min(updated_date) 
from TABLE_B 
where id = <someValue> 
group by id, status, stage