栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL条件带限制和先前值的位置

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL条件带限制和先前值的位置

您可以使用递归CTE遍历各行,并将一行与上一行进行比较,并应用归类为过渡的逻辑。

不过,查看您所需的输出,我认为

id = 10
它不会出现在列表中,因为它尚未过渡。

您可以单独运行以下示例进行测试:

CREATE TABLE #Data1    (      [id] INT ,      [data1] INT ,      [data1high] INT ,      [data1low] INT    );INSERT  INTO #Data1        ( [id], [data1], [data1high], [data1low] )VALUES  ( 1, 60, 200, 100 ),        ( 2, 80, 200, 100 ),        ( 3, 123, 200, 100 ),        ( 4, 150, 200, 100 ),        ( 5, 60, 200, 100 ),        ( 6, 60, 200, 100 ),        ( 7, 150, 200, 100 ),        ( 8, 40, 200, 100 ),        ( 9, 58, 200, 100 ),        ( 10, 62, 200, 100 ),        ( 11, 300, 200, 100 );WITH    cte          AS ( SELECt TOP 1  id ,  data1 ,  data1high ,  data1low ,  CASE WHEN data1 < data1low OR data1 > data1high THEN 1       ELSE 0  END AS Transitioned    FROM     #Data1    ORDER BY id    UNIOn ALL    SELECt   #Data1.id ,  #Data1.data1 ,  #Data1.data1high ,  #Data1.data1low ,  CASE WHEN cte.data1 < cte.data1low AND #Data1.data1 < #Data1.data1low THEN 0       WHEN cte.data1 > cte.data1high AND #Data1.data1 < #Data1.data1high THEN 0       WHEN cte.data1 BETWEEN cte.data1low AND cte.data1high AND #Data1.data1 BETWEEN #Data1.data1low       AND     #Data1.data1high       THEN 0       WHEN cte.Transitioned = 1 AND #Data1.data1 BETWEEN #Data1.data1low       AND     #Data1.data1high       THEN 1       ELSE 1  END AS Transitioned    FROM     #Data1  INNER JOIN cte ON cte.id + 1 = #Data1.id  )    SELECt  *    FROM    cte    WHERe   cte.Transitioned = 1DROP TABLE #Data1

在CTE中,将添加一列以标记已转换的行。这些

CASE WHEN
子句包含我可以评估的逻辑,如果与上一行相比发生过渡,则需要评估这些逻辑。

在CTE的末尾,您只需选择其中的所有行

Transitioned = 1
即可产生:

id  data1   data1high   data1low    Transitioned1   60      200         100         13   123     200         100         15   60      200         100         17   150     200         100         18   40      200         100         111  300     200         100         1

sqlfiddle



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441397.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号