我有一組數據不是按順序排列的。識別不在序列中的數字的行
No. Word
5 Hi
1 Hiii
2 Hiiiii
3 Hiiiiii
4 Hiiiiiii
如何使用sql語句打印出第一行,指示該數據在應該是時不連續的順序。
我想輸出是:
No.5 is not in sequential order.
我有一組數據不是按順序排列的。識別不在序列中的數字的行
No. Word
5 Hi
1 Hiii
2 Hiiiii
3 Hiiiiii
4 Hiiiiiii
如何使用sql語句打印出第一行,指示該數據在應該是時不連續的順序。
我想輸出是:
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;
這會輸出第一行「無序」。您可以使用我們的應用程序將其格式化爲特定的消息。
請問什麼是t。*?我認爲這是表名,但是是什麼。和*? –
@林雲輝。 。 。這是選擇表引用引用的所有列的一個簡短方法。 –
數據集不排序,除非您明確命令它。在您的示例中沒有定義行順序的列/表達式(表示No. = 5是第一行等) –
請勿將圖像用於數據樣本 –
請確認您使用的數據庫 – Tajinder