Я пытаюсь получить строку с наибольшим числом col5
, основываясь на сумме, как показано ниже:В MS Access, как получить наибольшую строку в каждой группе
SELECT
Col1,
Col2,
col3,
col4,
SUM(col5) AS TOTAL_col5
FROM table1
WHERE (((Col1)=variable1) AND ((col3)="variable2"))
GROUP BY
Col1,
Col2,
col3,
col4
ORDER BY
col4,
SUM(col5) AS TOTAL_col5 DESC
Я попытался с помощью Top 1
в select
хотя это возвращает только одну строку, я также пытался сделать MAX(SUM(col5) AS TOTAL_col5)
, но я получаю ошибки, потому что кажется, что вы не можете комбинировать агрегаты. Я думаю, что ответ - это подзапрос, но я не могу обдумать, как его написать.
Подробнее см. HarveyFrench: Я ищу внешний запрос, который затем вернет таблицу с самой большой суммой в col5 для каждой комбинации столбцов с 1 по 4. (Внутренний запрос возвращает ВСЕ суммы для каждого комбинация). Основываясь на его входе я попытался следующие, но она по-прежнему возвращает Everyting
SELECT
T1.Col1,
T1.Col2,
T1.Col3,
T1.Col4,
MAX(T1.TOTAL_col5)
FROM
(
SELECT
Col1,
Col2,
col3,
col4,
SUM(col5) AS TOTAL_col5
FROM table1
WHERE (((Col1)=variable1) AND ((col3)="variable2"))
GROUP BY
Col1,
Col2,
col3,
col4
ORDER BY
col4,
SUM(col5) AS TOTAL_col5 DESC
) AS T1
GROUP BY
T1.Col1,
T1.Col2,
T1.Col3,
T1.Col14
Thanks HarveyFrench, отредактированный для более подробной информации. – RedRaven
Внутренний запрос возвращает то, что вы просили! Он дает вам одну строку для каждой комбинации колонок с 1 по 4, у которой была сумма (что является единственной суммой для этой комбинации и, следовательно, является максимальным значением для этой комбинации. – HarveyFrench