0

所以我需要在我的代码的表格中打印最旧和最年轻的结果

SELECT client.clientfirstname, client.clientlastname, client.clientdob
FROM client
order by (client.clientdob) DESC
FETCH first 1 row only


SELECT client.clientfirstname, client.clientlastname, client.clientdob
FROM client
order by (client.clientdob) ASC
FETCH first 1 ROW ONLY;

这些 2 本身将返回正确的值,但我不能让它们同时运行,似乎我不能在此设置中使用 Union,如果可能的话,我可以同时获得第一个和最后一个的单个 select 语句会更好. 如果有办法让这两个都显示在同一个 SQL 查询结果窗口中,我也会使用 SQL 开发人员。

4

3 回答 3

1

你可以试试下面的 -

SELECT client.clientfirstname, client.clientlastname, client.clientdob
FROM client where 
client.clientdob=(select max(client.clientdob) from client)
or 
client.clientdob=(select min(client.clientdob) from client)
于 2020-09-06T07:56:49.697 回答
0

你可以UNION ALL像下面这样使用:

select c1.* from (select client.clientfirstname, client.clientlastname, client.clientdob, row_number() over (order by client.clientdob ASC) as rn FROM client) c1 where c1.rn =1
union all
select c2.* from (select client.clientfirstname, client.clientlastname, client.clientdob, row_number() over (order by client.clientdob DESC) as rn FROM client) c2 where c2.rn =1
于 2020-09-06T08:22:56.903 回答
0

我们可以使用分析函数row_number()来得到想要的结果,

select *
  from
(
select cl.clientfirstname
     , cl.clientlastname
     , cl.clientdob 
     , row_number() over (order by cl.clientdob desc) max_rn
     , row_number() over (order by cl.clientdob asc) min_rn
FROM client cl
) t
where (max_rn = 1 or min_rn = 1)
于 2020-09-06T08:24:51.363 回答