Следующий запрос приводит к дублированию 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
У вас есть «СОЮЗ», вот почему. Два отдельных счета. –
Kinda figured, есть ли все-таки сделать обновление, если я изначально создаю столбец NULL sCount? Я попробовал, но все значения sCount были равны 1. – codingManiac
Вы могли бы UNION в производной таблице, а затем ROW_NUMBER() во внешнем запросе. Это даст разные числа для строк, которые теперь получают дубликаты (если это то, что вам нужно.) –