如何解决在条件之间匹配表中的两个记录时如何获取最大记录?
with tb as(
select 1 as PPT_FROM,40 PPT_TO from dual
union
select 15 as PPT_FROM,40 PPT_TO from dual)
select * from tb
where 40 between PPT_FROM and PPT_TO;
现在输入的日期范围均为40或15,因此我想获取最大记录,即15 PPT_from和40 PPT_to
解决方法
我认为您想要order by
和fetch
:
select *
from tb
where 40 between FROM and TO
order by from desc
fetch first 1 row only;
在旧版本的Oracle(12之前的版本)中,您需要一个子查询:
select tb.*
from (select tb.*
from tb
where 40 between FROM and TO
order by from desc
) tb
where rownum = 1;
请注意,FROM
和TO
是列的非常不好的名称,因为它们是SQL关键字。
您可以使用简单的GROUP BY语句获得预期的结果
查询
library(evmix)
hillplot(claims$cost)
pickandsplot(claims$cost)
结果
WITH
tb
AS
(SELECT 1 AS PPT_FROM,40 PPT_TO FROM DUAL
UNION
SELECT 15 AS PPT_FROM,40 PPT_TO FROM DUAL)
SELECT MAX (ppt_from) AS ppt_from,ppt_to
FROM tb
WHERE 40 BETWEEN PPT_FROM AND PPT_TO
GROUP BY ppt_to;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。