SQL每日一题F1025,复杂逻辑处理

SQL每日一题F1025,复杂逻辑处理#

create table F1025
(
id int,
num int
)

insert into F1025 values(1,5);
insert into F1025 values(2,11);
insert into F1025 values(3,0);
insert into F1025 values(4,-2);
insert into F1025 values(5,2);
insert into F1025 values(6,9);
insert into F1025 values(7,1);
insert into F1025 values(8,-4);
insert into F1025 values(9,-7);

– Q:要求当Num中的数据同时大于上下两行数据,返回值为“是”, – 当Num中的数据小于上下两行数据中的任何一行,返回值为“否” – 例如:11大于5,11大于0,所以11那行返回值为“是”;5小于11,所以5那行返回值为“否”

SELECT 
    a.id
    ,a.Num
    ,CASE WHEN a.Num>ISNULL((
        SELECT Num FROM F1025 b WHERE b.id=a.id-1 
    ),a.Num-1)
    AND a.Num>ISNULL((
        SELECT Num FROM F1025 c WHERE c.id=a.id+1 
    ),a.Num-1) THEN '是' ELSE '否' END AS Result
FROM F1025 AS a