2017-02-12 12 views
1

我有一組數據不是按順序排列的。識別不在序列中的數字的行

No. Word 
5 Hi 
1 Hiii 
2 Hiiiii 
3 Hiiiiii 
4 Hiiiiiii 

如何使用sql語句打印出第一行,指示該數據在應該是時不連續的順序。

我想輸出是:

No.5 is not in sequential order. 
+2

數據集不排序,除非您明確命令它。在您的示例中沒有定義行順序的列/表達式(表示No. = 5是第一行等) –

+0

請勿將圖像用於數據樣本 –

+0

請確認您使用的數據庫 – Tajinder

回答

0

希望我理解正確的問題。

試圖在PostgreSql中創建相同的問題。

請使用下面的sql。

Sqlfiddle鏈接 - http://sqlfiddle.com/#!15/63802/14/0

select col1 , col2 
from 
(
select col1, case when col1 = m then 'Y' 
else 
case when 
col1-l=1 then 'Y' else 'N' end 
end st, col2 
from 
(
select col1 , lag(col1) over (order by ctid) l, 
min(col1) over(order by col1) m , col2 
from so_test 
order by ctid 
) a 
) a 
where st = 'N'; 
0

大多數數據庫支持ANSI標準lead()lag()功能。你可以這樣做:

select t.* 
from (select t.*, 
      lag(word) over (order by no) as prev_word, 
      lead(word) over (order by no) as next_word 
     from t 
    ) t 
where prev_word > word or next_word < word 
order by word 
fetch first 1 word only; 

這會輸出第一行「無序」。您可以使用我們的應用程序將其格式化爲特定的消息。

+0

請問什麼是t。*?我認爲這是表名,但是是什麼。和*? –

+0

@林雲輝。 。 。這是選擇表引用引用的所有列的一個簡短方法。 –