我正在尝试使用CTE将最新文件放入文件列表中。到目前为止,我有这个:
WITH CTE AS
(
SELECT
ID, TRISPATH, Document,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Document) AS RN
FROM
LinkedDocuments
)
SELECT
ID, Document, RN
FROM
CTE
WHERE
TRISPATH IS NOT NULL --AND RN!=1
似乎可以使用它返回我想要的一些ID,但是其中一些(大约30%)不从1开始,它们从基于ID的随机数开始:
14 J:\PRS\CVs\Original CVs\2015\N\*****, ***** CL Oct 15.txt 11
14 J:\PRS\CVs\Original CVs\2015\N\*****, ***** CV Nov 15.pdf 12
14 J:\PRS\CVs\Original CVs\2015\N\*****, ***** CV Oct 15.docx 13
我似乎无法弄清楚为什么会发生这种情况,我确定它与分区有关,但我无法弄清楚是什么。
答案 0 :(得分:3)
如果你有TRISPATH为空的记录,他们将被分配一个行号,然后在最终选择中过滤掉。
要确保行号从1开始,请将WHERE子句移动到CTE:
WITH CTE AS
(
SELECT ID, TRISPATH, Document, ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Document) AS RN
FROM LinkedDocuments
WHERE TRISPATH IS NOT NULL
)
SELECT ID,Document, RN FROM CTE