SQL接收行并执行其他查询

时间:2016-10-05 09:01:41

标签: postgresql sql-function

我需要一个sql函数来计算来自不同表的数据。

有两个表,

tbl_moving
|-----------------------------|
| start_datetime      | value |
|-----------------------------|
| 2016-10-05 10:00:00 |   23  |
| 2016-10-05 10:10:00 |   24  |
|-----------------------------|

tbl_execution
|-----------------------------|
| executed_datetime   | value |
|-----------------------------|
| 2016-10-05 10:05:00 | true  |
| 2016-10-05 10:16:00 | false |
|-----------------------------|

现在我需要返回一个包含以下数据的数组:

"tbl_moving"."start_datetime", "tbl_moving"."value", "tbl_moving"."stop_datetime" (is the next start_datetime (10:10:00), "tbl_execution"."value" (where executed_datetime is between "tbl_moving"."start_datetime" and the next start_datetime (10:10:00)

我的问题是,我不知道如何收到查询结果

这样的东西
a = SELECT max(start_datetime) as start_datetime FROM "tbl_moving" WHERE value != 0 ORDER BY sig_datetime DESC GROUP BY start_datetime LIMIT 1;

1 个答案:

答案 0 :(得分:1)

您不需要为此功能,您只需一个查询即可:

select m.*, e.value
from (
  select m.start_datetime, 
         lead(m.start_datetime) over (order by m.start_datetime) as stop_datetime,
         m.value
  from tbl_moving m
) m 
   join tbl_execution e
     on e.start_datetime between m.start_datetime and m.stop_datetime