我正在尝试创建一个引用pgsql中另一个视图的视图。此新视图将查找列的最大和最小日期值。我想打印出一个单独的列“status”,即max和min
到目前为止代码,没有尝试过标签:
create or replace view Max_Min(status, name, employer, date)
as
SELECT * FROM another_view
WHERE date = (SELECT MAX(date) FROM another_view)
OR date = (SELECT MIN(date) FROM another_view)
;
如何使用“最大值”和“最小值”字符串填充状态?
答案 0 :(得分:0)
这应该这样做,并且可能更快,并且只需要对表进行一次扫描:
select t.*,
case
when t.date = t.max_date then 'max. date'
else 'min. date'
end as status
from (
select av.*,
min(av.date) over () as min_date,
max(av.date) over () as max_date,
from another_view av
) t
where date in (min_date, max_date)
顺便说一下:date
是一个可怕的名字。不仅因为它也是一个保留字,更重要的是因为它没有记录列包含的内容。是“结束日期”,“开始日期”,“雇用日期”,“截止日期”,......?