在sql中使用密集排序功能时,我需要一些帮助
我在表中有以下数据,
我想基于CREATED DATE列对记录进行排序,然后分配相同的行号 如果多个记录的文档ID相同。我使用了以下查询,但行号未排序
SELECT * FROM (((SELECT * FROM (SELECT DENSE_RANK() OVER(order by VC_VIN_DOCUMENT_ID) AS "RowNumber",
VC_VIN_DOCUMENT_ID,VC_VIN_LOCALE,VC_VIN_IMDOC_CREATE_DATE,VC_VIN_CARLINE_CODE,VC_VIN_DOCUMENT_TYPE
from (SELECT DISTINCT VC_VIN_IMDOC_CREATE_DATE,VC_VIN_DOCUMENT_TYPE, VC_VIN_LOCALE,VC_VIN_DOCUMENT_ID,VC_VIN_CARLINE_CODE from OK_DC.GMS3_VC_MME_VIN_SI_DETAIL ORDER BY VC_VIN_IMDOC_CREATE_DATE DESC))))) ;
我想实现以下目标。
有人可以帮助我进行查询。
感谢您的时间!
答案 0 :(得分:1)
您可以分两步执行此操作。首先是获取创建日期。然后分配行号:
select vsd.*,
dense_rank() over (order by max_cd desc, VC_VIN_DOCUMENT_ID) as rowNumber
from (select vsd.*,
MAX(vsd.VC_VIN_IMDOC_CREATE_DATE) over (partition by vscd.VC_VIN_DOCUMENT_ID) as max_cd
from OK_DC.GMS3_VC_MME_VIN_SI_DETAIL vsd
) vsd;