【问题标题】:convert access group by query to sql server query通过查询将访问组转换为 sql server 查询
【发布时间】:2020-12-18 09:48:00
【问题描述】:

我无法将 MS Access 查询转换为 SQL SERVER 查询,并按列更改分组,因为它会影响最终结果。该查询的目的是计算项目账户的债权人和债务人。

我尝试用“CTE”重写,但没有得到任何好的结果..希望有人能帮助我..提前谢谢...

这是我要转换的查询:

SELECT Sum(ZABC.M) AS M, Sum(ZABC.D) AS D, ZABC.ACC_NUMBER, ZABC.PROJECT_NUMBER, [M]-[D] AS RM, [D]- 
[M] AS RD
FROM ZABC
GROUP BY ZABC.ACC_NUMBER, ZABC.PROJECT_NUMBER
ORDER BY ZABC.PROJECT_NUMBER;

【问题讨论】:

    标签: sql sql-server ms-access group-by sum


    【解决方案1】:

    查询的问题是select 子句中的[M][D]:这些列应该在group by 子句中重复,或者被一个聚合函数包围。您当前的group by 子句为每个(acc_number, project_number) 元组提供一行:您需要为DM 选择您想要的计算,每个组可能有几个不同的值。

    您没有解释原始查询的目的。也许你的意思是:

    SELECT 
        Sum(ZABC.M) AS M, 
        Sum(ZABC.D) AS D, 
        ZABC.ACC_NUMBER, 
        ZABC.PROJECT_NUMBER, 
        Sum(ZABC.M) - SUM(ZABC.D) AS RM, 
        SUM(ZABC.D) - SUM(ZABC.M) AS RD
    FROM ZABC
    GROUP BY ZABC.ACC_NUMBER, ZABC.PROJECT_NUMBER
    ORDER BY ZABC.PROJECT_NUMBER;
    

    有多种聚合函数可供您选择,例如MIN()MAX()AVG() 等。

    【讨论】:

    • 最后两行不使用Sum函数可以吗
    • @xamo;有关该问题的更多详细信息,请参阅我编辑的答案。您希望这些列中的哪个值?
    • 我看到编辑sir,这个查询的目的是计算项目账户的债权人和债务人。
    • @xamo:好的。我建议的查询不是为您提供了您想要的结果吗?
    • 非常感谢,您建议的查询给了我想要的结果
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-29
    • 2016-07-29
    • 2020-03-06
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 1970-01-01
    相关资源
    最近更新 更多