Oracle数据库SQL查询结果去重——ROW_NUMBER() OVER

完整SQL

select
    cxsj,
    zs,
    djjg,
    row_flag
from (
    select
        plcx.QUERY_START_DATE || ' 至 ' || plcx.QUERY_END_DATE AS cxsj,
        (select dom from REG_VIEW_INDIV_ENT where ENT_NAME = '') AS zs,
        ''                                     AS djjg,
        ROW_NUMBER() OVER ( PARTITION BY QY_NAME order by CZ_DATE) as row_flag
    from
        CY_CXCZ_PLCX plcx

    ) t where row_flag = 1

内层SQL查询出来的结果都会增加row_flag列,如下图片所示

Oracle数据库SQL查询结果去重——ROW_NUMBER() OVER_第1张图片

那么我们可以再套一层循环得到我们需要的数据,比如我们只取新的数据,按照插入时间排序,取row_flag = 1 的数据就行。

你可能感兴趣的:(数据库,oracle,sql)