Oracle根据列值从多行中选择一行

时间:2014-07-09 14:53:00

标签: sql oracle report

我正在使用Oracle SQL。 以下是示例表:

MachineStatus
--------------
Machine        Status  date_time               station
G1          1       07/09/2014 10:11        s1
G2          1       07/09/2014 10:11        s1
G3          0       07/09/2014 10:11        s1

G1          1       07/09/2014 10:12        s1
G2          1       07/09/2014 10:12        s1
G3          0       07/09/2014 10:12        s1

G1          0       07/09/2014 10:13        s1
G2          0       07/09/2014 10:13        s1
G3          0       07/09/2014 10:13        s1

如果有任何机器可用(如果状态为1),我想在任何给定的分钟列出该站的状态,如下所示。

Station    status             date_time
s1           1               07/09/2014 10:11
s1           1               07/09/2014 10:12
s1           0               07/09/2014 10:13

报告需要根据可用性每日/每周生成。

我该如何处理此查询?

1 个答案:

答案 0 :(得分:0)

以下查询将为您提供示例的结果:

SELECT
    station,
    (CASE WHEN sum(status) > 1 THEN 1 ELSE 0 END) AS status,
    date_time
FROM MachineStatus
GROUP BY station, date_time
ORDER BY date_time 

至少有一个状态为1意味着该组和date_time的状态总和必须大于1.