Я работаю над запросом, который возвращает набор результатов, разделенный на группы, я хочу получить суммирование столбца "MA" с последним значением столбца "DATE" в каждой группе, все мои попытки приводят кнеправильное суммирование и неправильное последнее значение.
Это одна из моих попыток: здесь, когда я делаю ORDER BY "DATE" в ROW_NUMBER (), это приводит к другим результатам, я не могу сделать ORDER BY для другого столбца, потому что он бесполезенесли я не использовал ROW_NUMBER () в ORDER BY, и это невозможно.
WITH cte AS
(
SELECT
SUM([ADB_LAST].[MA]) AS [MA],
SUM([ADB_LAST].[DA]) AS [DA],
[ADB_LAST].[ID_BAS],
[ADB_LAST].[PRO_NUMBER],
[ADB_LAST].[ACC_NUMBER],
[ADB_LAST].[DATA], [ADB_LAST].[DATE] AS MyDate,
[ADB_LAST].[Q],
[ADB_LAST].[P],
RNum = ROW_NUMBER() OVER (PARTITION BY [ADB_LAST].[ACC_NUMBER] ORDER BY [ADB_LAST].[DATE] DESC),
[ADB_LAST].[UNIT],
[ADB_LAST].[ID],
SUM([ADB_LAST].[R]) AS [R]
FROM
[ADB_LAST](@PRO_NAME, @SDAY, @FDAY)
GROUP BY
[ACC_NUMBER], [PRO_NUMBER], [DATA], [Q], [P],
[UNIT], [ID], [ID_BAS], [DATE]
HAVING
SUM([R]) <> 0
)
SELECT
MA, DA,
[ID_BAS],
[PRO_NUMBER],
[ACC_NUMBER],
[DATA],
[Date],
[Q], [P],
[UNIT],
[ID],
R
FROM
cte
WHERE
RNum = 1
Я уже задавал подобный вопрос и раньше, и ответ решил мою проблему в то время, но на этот раз с ожидаемыми результатами все пошло не так, как я хочу.
Вот снимок экрана с результатом, в котором столбец "MA" имеет правильные значения суммирования, а столбец "DATE" имеет неправильные значения, дата первой строки должна быть 27/01/2008, что является значением DATE последней строки врезультат предыдущего запроса.