Как сжать повторяющиеся записи и взять преобладающее значение для элемента данных? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующие столбцы в таблице: [PO Concatenate], [Award], [Material Group] Может быть несколько записей с одним и тем же [PO Concatenate], но я хочу иметь возможность конденсировать запись в одна запись, состоящая из [Award] SUM и [Material Group] записи с наибольшим значением.

Например: [PO Concatenate] «3140950_ #» должно привести к одной строке с [Material Group ] «E006» и [Award] = «489,7 долл. США» enter image description here

Я пробовал выполнить запрос из перекрестной таблицы, и хотя он уменьшает количество повторов и суммирует награду, он не получает правильная группа материалов. Я только что узнал сегодня, что при использовании функции First приоритет отдается первому элементу Alphanumeri c вместо первого значения при сортировке по Award в порядке убывания. Я использую стандартное поле [FY / P].

ОБНОВЛЕНИЕ для @ Applecore

TRANSFORM Sum([MG ETC].Award) AS SumOfAward
SELECT 
M.[PO Concatenate], 
Sum(M.Award) AS TotalAward,
(SELECT TOP 1 M1.[Material Group] FROM [MG ETC] AS M1 WHERE M1.[PO #]=M.[PO Concatenate] ORDER BY M1.Award DESC) AS TopGroup
FROM [MG ETC] AS M
GROUP BY M.[PO Concatenate]
PIVOT [MG ETC].[FY/P];

Возможно ли то, что я пытаюсь сделать, в Access?

1 Ответ

0 голосов
/ 17 июня 2020

Вы можете использовать подзапрос для возврата группы материалов со значением TOP 1 Award:

SELECT M.[PO Concatenate], 
Sum(M.Award) AS TotalAward, 
(SELECT TOP 1 M1.[Material Group] FROM [MG ETC] AS M1 WHERE M1.[PO Concatenate]=M.[PO Concatenate] ORDER BY M1.Award DESC) AS TopGroup
FROM [MG ETC] AS M
GROUP BY M.[PO Concatenate];

С уважением,

...