我有一组不按顺序排列的数据。
No. Word
5 Hi
1 Hiii
2 Hiiiii
3 Hiiiiii
4 Hiiiiiii
如何使用sql语句打印出第一行,该语句指示此数据不应按顺序排列。
我想要的输出是:
No.5 is not in sequential order.
答案 0 :(得分: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';
答案 1 :(得分: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;
这将输出“乱序”的第一行。您可以将您的应用程序格式化为特定消息。