循环postgresql函数通过日期范围

时间:2016-01-27 23:17:27

标签: postgresql

我有一个用户定义的功能。 This question显示了如何循环日期。使用这种方法,我尝试了这个查询:

select myfun(a::date) from generate_series('2015-01-01'::date,'2016-01-27','1 day') s(a)

这并不是很有效。它返回的是表格中的单个列:

(10101, "Sample",  "test")
(10102, "Sample2", "test2")

实际上应该有三列。它将它们合并为一个。

我注意到,当我省略星号时,这与您在select mytable等香草查询中获得的行为相同。上面的查询中没有星号,但添加一个会导致错误。

1 个答案:

答案 0 :(得分:4)

将函数调用放在FROM子句中:

select f.*
from 
    generate_series('2015-01-01'::date,'2016-01-27','1 day') s(a),
    myfun(a::date) f;

这种形式的FROM子句称为横向连接