我需要有关Oracle 10g中查询的帮助,

这是我的问题:

有一个表存储来自不同设备的信号状态。

  • 将SS1和SS2信号随机插入表
  • 如果SS1或SS2信号状态之一为“up”,则结果信号应为“up”
  • 如果SS1和SS2的信号状态均为“down”,则结果信号应为“down”

  • 我想准备一个查询,该查询显示结果信号状态根据SS1和SS2信号而变化。

    当我看到该图时,这似乎很简单,但是我无法使用解析函数编写查询。

    表创建和插入脚本为here.

    提前致谢,

    最佳答案

    SELECT  s2.*,
            CASE WHEN ss1 = 'down' AND ss2 = 'down' THEN 'down' ELSE 'up' END AS result
    FROM    (
            SELECT  s.*,
                    LAST_VALUE(DECODE(signal_id, 'SS1', signal_status, NULL) IGNORE NULLS) OVER (ORDER BY signal_date) AS ss1,
                    LAST_VALUE(DECODE(signal_id, 'SS2', signal_status, NULL) IGNORE NULLS) OVER (ORDER BY signal_date) AS ss2
            FROM    t_signal s
            ) s2
    ORDER BY
            signal_date
    

    关于oracle - 可以使用oracle分析功能吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2100438/

    10-16 16:25