You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL查询中仅显示每次迭代的首尾Idle状态

SQL查询优化:仅展示连续Idle状态的首尾记录

我在编写SQL查询时需要实现以下逻辑:

  • 仅保留每次连续Idle状态迭代过程中的第一条和最后一条记录
  • Active与Stop状态的显示逻辑保持不变,无需调整

以当前场景为例,仅需呈现tagid为4886和4889的Idle记录,中间的Idle条目(4887、4888)不需要显示。


当前查询语句

WITH LaggedHyd101 AS (
    SELECT
        [tagid],
        [recordtime],
        [D1],
        [D2],
        [D3],
        [D4],
        [D5],
        [D6],
        [D7],
        [D8],
        [D9],
        [D10],
        [D11],
        [D12],
        [D13],
        [D14],
        [D15],
        [D16],
        [D17],
        [D18],
        LEAD([D17]) OVER (ORDER BY [recordtime] DESC) AS LaggedD17,
        LEAD([D18]) OVER (ORDER BY [recordtime] DESC) AS LaggedD18
    FROM
        [INFOU_CCR23].[dbo].[HYD101]
)
SELECT
    [tagid],
    [recordtime] AS StartTime,
    LAG([recordtime]) OVER (ORDER BY [recordtime] DESC) AS StopTime,
    [D1],
    [D2],
    [D3],
    [D4],
    [D5],
    [D6],
    [D7],
    [D8],
    [D9],
    [D10],
    [D11],
    [D12],
    [D13],
    [D14],
    [D15],
    [D16],
    [D17],
    [D18],
    ABS(DATEDIFF(MINUTE, LAG([recordtime]) OVER (ORDER BY [recordtime] DESC), [recordtime])) AS DifferentTime,
    CASE
        WHEN ([D18] = 0 AND [D17] = 0) THEN 'Stop'
        WHEN ([D18] = 1 AND [D17] > 0 ) THEN 'Active'
        WHEN ([D18] = 1 AND  LaggedD17 = 0) THEN 'Idle'
        ELSE NULL
    END AS Status
FROM
    LaggedHyd101
WHERE
    ([D18] = 0 AND (LaggedD18 IS NULL OR LaggedD18 = 1))
    OR
    ([D18] = 1 AND (LaggedD18 IS NULL OR LaggedD18 = 0))
    OR
    ([D18] = 1  AND (LaggedD18 IS NULL OR LaggedD17 = 0 ))
ORDER BY
    [recordtime] DESC;

期望的正确查询结果

tagid   StartTime           StopTime            D1      D2  D3  D4  D5  D6  D7  D8  D9  D10 D11 D12 D13 D14 D15 D16 D17 D18 DifferentTime   Status
5851    2024-01-09 14:56:08.063 NULL                HYD-101     375 137 50  69  1500                                                        1500    900 4054                            650 1   NULL    Active
5850    2024-01-09 14:55:10.470 2024-01-09 14:56:08.063 HYD-101     381 47  50  11  1501                                                        1500    0   4054                            0   1   1   Idle
5565    2024-01-09 10:10:10.467 2024-01-09 14:55:10.470 HYD-101     387 0   0   0   0                                                       1500    0   4054                            0   0   285 Stop
5475    2024-01-09 08:40:10.470 2024-01-09 10:10:10.467 HYD-101     376 123 50  62  1500                                                        1500    900 4053                            650 1   90  Active
5105    2024-01-09 02:30:10.467 2024-01-09 08:40:10.470 HYD-101     383 0   0   0   0                                                       1500    0   4053                            0   0   370 Stop
5019    2024-01-09 01:04:08.063 2024-01-09 02:30:10.467 HYD-101     382 45  50  9   1501                                                        1500    0   4051                            400 1   86  Active
5018    2024-01-09 01:03:08.060 2024-01-09 01:04:08.063 HYD-101     381 45  50  9   1501                                                        1500    0   4051                            0   1   1   Idle
5002    2024-01-09 00:47:08.067 2024-01-09 01:03:08.060 HYD-101     384 0   0   0   0                                                       1500    0   4051                            0   0   16  Stop
4890    2024-01-08 22:55:10.470 2024-01-09 00:47:08.067 HYD-101     374 124 50  62  1501                                                        1500    900 4049                            680 1   112 Active
4889    2024-01-08 22:54:08.063 2024-01-08 22:55:10.470 HYD-101     377 44  50  9   1500                                                        1500    0   4049                            0   1   1   Idle
4886    2024-01-08 22:51:08.063 2024-01-08 22:52:08.070 HYD-101     378 44  50  9   1501                                                        1500    0   4049                            0   1   1   Idle
4801    2024-01-08 21:26:08.063 2024-01-08 22:51:08.063 HYD-101     375 121 50  60  1501                                                        1500    900 4048                            680 1   85  Active
4678    2024-01-08 19:23:08.060 2024-01-08 21:26:08.063 HYD-101     425 45  7   -1  304                                                     1500    0   4048                            0   0   123 Stop
4677    2024-01-08 19:22:08.063 2024-01-08 19:23:08.060 HYD-101     380 52  50  17  1500                                                        1500    0   4048                            0   1   1   Idle
4608    2024-01-08 18:13:08.063 2024-01-08 19:22:08.063 HYD-101     383 0   0   0   0                                                       1500    0   4048                            0   0   69  Stop
4486    2024-01-08 16:11:08.063 2024-01-08 18:13:08.063 HYD-101     372 123 50  61  1500                                                        1500    900 4046                            670 1   122 Active

内容的提问来源于stack exchange,提问作者hendry prakoso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 17:58:09