0
以下查询会在第一个分区集之后产生重复的row_numbers。例如,第一组fldPK = 2403和fldCIA = 1,收到以下...ROW_NUMBER()OVER PARTITION返回重复值
2403 1 1
2403 1 2
2403 1 3
2403 1 4
和第二组中的我接收...
2403 2 1
2403 2 1 <-- duplicate 1 within the same partition
2403 2 2
2403 2 3
SELECT *, 1 AS fldBF,
ROW_NUMBER() OVER (PARTITION BY fldPK, fldCIA ORDER BY fldPK) AS sCount
INTO #tmpTable
FROM V_qryCSPGA
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
UNION ALL
SELECT *, 1 AS fldBF,
ROW_NUMBER() OVER (PARTITION BY fldPK, fldCIA ORDER BY fldPK) AS sCount
FROM FN_qryCSGBA()
WHERE fldPK IN(SELECT DISTINCT thePK FROM FN_qryAllDTPK())
ORDER BY fldPK, fldCIA, fldNDat;
为什么会发生这种情况?对于每一套fldPK和fldCIA的我需要重新启动的行号数为1,更正确的数据会...
2403 3 1
2403 3 2
2403 3 3
2403 3 4
2403 3 5
2403 3 6
2403 3 7
2403 3 8
2403 3 9
你有一个'UNION',这就是为什么。两个单独的计数。 –
有点想通,如果我最初创建一个NULL sCount列,是否有更新?我试过了,但所有的sCount值都是1. – codingManiac
您可以在派生表中使用UNION,然后在外部查询中使用ROW_NUMBER()。这会给现在得到重复的行赋予不同的数字(如果这就是你所需要的)。 –