私は、一連のデータが連続した順序ではありません。私はそれがあるべきときに、このデータは連続した順序ではないことを示しているSQL文を使用して最初の行を印刷するにはどうすればよい番号が連続していない行を特定します。
No. Word
5 Hi
1 Hiii
2 Hiiiii
3 Hiiiiii
4 Hiiiiiii
。
私が欲しいの出力は次のようになります。
No.5 is not in sequential order.
私は、一連のデータが連続した順序ではありません。私はそれがあるべきときに、このデータは連続した順序ではないことを示しているSQL文を使用して最初の行を印刷するにはどうすればよい番号が連続していない行を特定します。
No. Word
5 Hi
1 Hiii
2 Hiiiii
3 Hiiiiii
4 Hiiiiiii
。
私が欲しいの出力は次のようになります。
No.5 is not in sequential order.
私が正しくあなたの問題を理解願って。
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';
ほとんどのデータベースには、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"の最初の行が出力されます。これを特定のメッセージとしてフォーマットするアプリケーションを私たちに教えてください。
私は何ですか?私はそれがテーブル名だと仮定しますが、それは何ですか。と*? –
@ LimYunHui。 。 。これは、テーブル参照によって参照されるすべての列を選択するための短手です。 –
データセットは、明示的に注文しない限り注文されません。あなたの例では、列の順番を定義する列/式はありません(番号= 5が最初の行などであることを示すもの) –
データサンプルに画像を使用しないでください –
使用しているデータベースを確認してください – Tajinder