可以用oracle分析函数完成吗?

时间:2010-01-20 10:01:48

标签: oracle oracle10g

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

这是我的问题:

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

  1. SS1和SS2信号以随机时间插入表中,

  2. 如果SS1或SS2信号状态之一为“up”,则结果信号应为“up”

  3. 如果SS1和SS2信号状态均为“向下”,则结果信号应为“向下”

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

    当我看到图表时似乎很容易,但我无法使用分析函数编写查询。

    表创建和插入脚本为here.

    提前致谢,

1 个答案:

答案 0 :(得分:3)

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