我有一个名为学生的视图,显示他们的姓名,学校,电话号码和开始的日期,它看起来如下所示
select * from Students;结果如下所示
Name        |    School    |    Phone    |    Date_Started
Student A    Electrical Eng   0424477876      1/02/2008
Student B    Software Eng     0425432598      1/02/2008
Student C    Mathematics      0487639487      2/02/2012
Student D    Photovoltaic     0425588596      4/06/2012
Student G    Commerce         0425588692      6/08/2014现在,我需要创建一个视图,该视图根据开始日期查找最先开始的学生和最后开始的学生,并应生成以下输出
Started    |    Name    |    School    |    Date_Started
first        Student A   Electrical Eng     1/02/2008
first        Student B   Software Eng       1/02/2008
last         Student G   Commerce           6/08/2014      因此,这需要一个新的视图来使用现有的视图来实现这一点。
我是postgreSQL的新手,曾经尝试过一些似乎不起作用的案例语句,谢谢你的帮助。
发布于 2017-03-24 14:56:45
您可以使用窗口函数在一条语句中计算该值:
select *
from (
  SELECT case 
           when date_started = min(date_started) over () then 'first' 
           when date_started = max(date_started) over () then 'last'
         end as Started, 
         Name, School, Date_Started
  FROM Students 
) s 
where started in ('first', 'last')
order by date_started;发布于 2017-03-24 14:50:12
您可以使用UNION来组合来自两个查询的结果。
SELECT 'first' Started, Name, School, Date_Started
FROM Students WHERE Date_Started = (SELECT MIN(Date_Started) FROM Students)
UNION
SELECT 'last' Started, Name, School, Date_Started
FROM Students WHERE Date_Started = (SELECT MAX(Date_Started) FROM Students)发布于 2017-03-24 14:59:48
嗨,你可以试试这个ans
select 'First' as 'Started',* from student where Date_Started =(select min(Date_Started) from student)
union
select 'Last' as 'Started',* from student where Date_Started =(select max(Date_Started) from student)https://stackoverflow.com/questions/42992967
复制相似问题