Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何生成PostgreSQL事件表的通用时间间隔视图?_Sql_Postgresql_Metaprogramming_Intervals - Fatal编程技术网

如何生成PostgreSQL事件表的通用时间间隔视图?

如何生成PostgreSQL事件表的通用时间间隔视图?,sql,postgresql,metaprogramming,intervals,Sql,Postgresql,Metaprogramming,Intervals,我有一个PostgreSQL查询,它生成一个只将前30天的数据存储到视图中的视图 CREATE view vet_visits_over_first_30_days AS (SELECT veterinarian_session.animal_id AS "animal", veterinarian_account.enrollment_date AS "Enrolled", veterinarian_sessionactivity.created_date AS "Admit Date", v

我有一个PostgreSQL查询,它生成一个只将前30天的数据存储到视图中的视图

CREATE view vet_visits_over_first_30_days AS
(SELECT veterinarian_session.animal_id AS "animal", veterinarian_account.enrollment_date AS "Enrolled", veterinarian_sessionactivity.created_date AS "Admit Date", veterinarian_sessionactivity.detail AS "Reason" 
FROM veterinarian_account, veterinarian_sessionactivity, veterinarian_session 
WHERE veterinarian_sessionactivity.created_date BETWEEN veterinarian_account.enrollment_date AND veterinarian_account.enrollment_date + '30 days'::INTERVAL AND veterinarian_sessionactivity.activity_sub_id=52 AND veterinarian_sessionactivity.session_id = veterinarian_session.id AND veterinarian_session.animal_id=veterinarian_account.id 
ORDER BY veterinarian_session.animal_id);
这样我就可以做到:

select * from vet_visits_over_first_30_days;
并且只在前30天内返回访问

但是,我通常需要在大量表上执行此操作,这些表在不同的时间段(例如30、60、90、180天)上具有相同的日期字段


我想我可以使用SQL元编程和视图来实现这一点,但是使用PostgreSQL有更好的方法吗?

如果有多个表,您可能希望使用
执行格式(…)在PL/PgSQL函数中生成动态SQL使用…
。如果有多个表,您可能希望在PL/PgSQL函数中使用…执行格式(…)生成动态SQL。如果有多个表,您可能希望在PL/PgSQL函数中使用…执行格式(…)生成动态SQL。