【问题标题】:Top nth of a report with rest as other报告的前 n 位,其余为其他
【发布时间】:2023-03-06 15:41:01
【问题描述】:

我有一个按供应商显示总金额的查询。我想要一份报告,其中显示前 9 个,其余的一起添加到“其他”供应商下。因此,详细信息显示了前 9 个供应商,其余为其他组,报告中的总数包括所有。

我无法获得前 9 名,但我如何获得“其他”

我使用的是 MS Access 2007


编辑:

我还需要添加另一个登记册中的公司名称。 t_costed 具有值,链接到具有公司的 t_register_2bre,链接到具有公司名称的 t_contacts_company

我知道 select 查询返回的列数在两个联合查询中必须相等,但我正在努力处理 INNER JOIN

【问题讨论】:

    标签: sql ms-access ms-access-2007


    【解决方案1】:

    您可以通过以下方式使用union 查询:

    select top 9 t.amount
    from table1 t
    order by t.amount desc
    union all
    select sum(u.amount)
    from table1 u
    where 
    u.amount < 
    (
        select min(v.amount) 
        from 
        (select top 9 w.amount from table1 w order by w.amount desc) v
    )
    

    在这里,将所有对 table1 的引用更改为您的表名。


    编辑:

    根据您问题中提供的其他信息,我建议使用以下(未经测试的)SQL:

    select top 9 c.company, t.amount
    from 
        (t_costed t inner join t_register_2bre r on t.eventidbre = r.id_bre) 
        inner join t_contacts_company c on r.defaulting_partyid = c.id_contacts_company
    order by t.amount desc
    union all
    select "Others" as company, sum(u.amount)
    from t_costed u
    where 
    u.amount < 
    (
        select min(v.amount) 
        from 
        (select top 9 w.amount from t_costed w order by w.amount desc) v
    )
    

    【讨论】:

    • 效果很好,谢谢。我需要添加另一个注册中的公司名称。 Costed 具有值,链接到具有公司的注册,链接到具有公司名称的联系人。我知道选择的数量必须等于两个加入的查询,但我正在努力解决 INNER JOIN。
    • @ShawnLotriet-Homann 请使用此新信息编辑您的原始问题,并包含您的数据库表的关系图。
    • 您好添加了关系表图片。
    • 我已经更新了我的 SQL 查询,但它要求 r.defaulting_partyID 缺少一个参数
    • @ShawnLotriet-Homann 这通常意味着无法识别字段 defaulting_partyID - 我是否正确拼写了字段名称?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    相关资源
    最近更新 更多