【问题标题】:In MS Access how to get the largest row in each group在 MS Access 中如何获取每个组中的最大行
【发布时间】:2015-08-26 16:31:43
【问题描述】:

我正在尝试根据以下总和获得最大数字 col5 的行:

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

我曾尝试在select 中使用Top 1,虽然这只带回一行,但我也尝试过使用MAX(SUM(col5) AS TOTAL_col5),但出现错误,因为您似乎无法合并聚合。我认为答案是一个子查询,但我不知道如何编写它。

按照 HarveyFrench 的更多详细信息:我正在寻找外部查询,然后该查询将返回一个表,该表对于 cols 1 到 4 的每个组合在 col5 中具有最大的总和。(内部查询返回每个组合的所有总和)。根据他的输入,我尝试了以下操作,但它仍然返回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

【问题讨论】:

    标签: ms-access subquery ms-access-2013


    【解决方案1】:

    我不太明白你在问什么“如何获得每组中最大的行”。

    在下面的 SQL 中,内部查询返回一个表 T1,它对 cols 1 到 4 的每个组合的 col5 求和。

    外部查询为每个 col4 找到 col5 的最高 SUM。

    我认为这就是您所要求的,但在您的问题更清楚之前,我无能为力。

    SELECT col4
         , MAX(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
    ) AS T1
    GROUP BY col4
    )
    

    【讨论】:

    • 内部查询正在返回您所要求的内容!它为具有总和的第 1 到 4 列的每个组合提供一行(这是该组合的唯一总和,因此是该组合的最大值。请提供更多信息。-
    猜你喜欢
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多