2017-02-12 9 views
1

私は、一連のデータが連続した順序ではありません。私はそれがあるべきときに、このデータは連続した順序ではないことを示しているSQL文を使用して最初の行を印刷するにはどうすればよい番号が連続していない行を特定します。

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

私が欲しいの出力は次のようになります。

No.5 is not in sequential order. 
+2

データセットは、明示的に注文しない限り注文されません。あなたの例では、列の順番を定義する列/式はありません(番号= 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; 

"out of order"の最初の行が出力されます。これを特定のメッセージとしてフォーマットするアプリケーションを私たちに教えてください。

+0

私は何ですか?私はそれがテーブル名だと仮定しますが、それは何ですか。と*? –

+0

@ LimYunHui。 。 。これは、テーブル参照によって参照されるすべての列を選択するための短手です。 –

関連する問題