select distinct 
snap1.rn,
snap2.rn1,
snap1.doc_num


from (select DISTINCT *,
row_number() over (partition by car_id order by SNAPSHOT_DATE, CAR_ID) rn
from MY_TABLE
)snap1 


left join 
(select DISTINCT *,
row_number() over (partition by car_id order by SNAPSHOT_DATE, CAR_ID) rn1
from MY_TABLE
)snap2 
on snap1.CAR_ID = snap2.CAR_ID

where snap1.DOC_NUM = '73927243'
and snap1.rn = '1'

I want to retrieve 1 record with the 1st and last record, e.g. RN = 1 and RN1 = 12.
not the others records. note: the max is not always 12, could be 10, 11 etc.

我已经try 了max(Rn1),但它仍然返回所有12行.

一旦我可以获得1条记录的第一条和最后一条记录,我将把它扩展到所有的docnum.所以我不能使用"限制1".

RESULT NEEDED

推荐答案

您可以 Select 按逆序排序的第一行:

select  *
from    (
        select  row_number() over (partition by car_id
                        order by snapshot_date) rn
        ,       *
        from    MY_TABLE
        ) tmin
left join
        (
        select  row_number() over (partition by car_id
                        order by snapshot_date DESC) rn
        ,       *
        from    MY_TABLE
        ) tmax
on      tmin.car_id = tmax.car_id
        and tmax.rn = 1
where   tmin.rn = 1

Sql相关问答推荐

Postgresql:从jsons数组到单个id索引的json

获取每个帖子的匹配关键字列表

LAG函数通过丢弃空值返回前一行

Stack Exchange站点上的最短帖子(按正文长度计算,用户名为原始发帖(SEDE))

部分匹配表中元素的MariaDB查询查找结果

更新其组的日期字段值小于最大日期减go 天数的记录

SQL:如何查找聚合满足条件的连续日期

Redshift PL/pgSQL循环中的参数化列名

SQL:如果一个表中的日期在另一个表的日期的12个月内,则为是或否

如何判断小数点后千位是否不为0

复制行并根据 Oracle SQL 中其他表的值更改值

如何从三个连接表中获取数据,并始终显示第一个表中的数据,以及第三个表中的空值或现有记录?

INSERT INTO 语法

JSON对象查询SQL服务器

根据潜在空值的条件对记录进行计数

PostgreSQL - 从同一张表中获取值

如何 Select 一列具有最小值而另一列具有给定值的记录?

如何在 PL/SQL 中区分返回的 XML 值?

SQL Group By 然后映射出是否存在值

Snowflake SQL group-by 的行为不同,具体取决于列是按位置引用还是按别名引用