【问题标题】:MSaccess search inconsistent recordsMSaccess 搜索不一致的记录
【发布时间】:2020-12-20 23:54:04
【问题描述】:

我有一个包含 InvoiceNAME、InvoiceSUM 列的 INVOICES 表和一个包含 InvoiceNAME、ItemNAME、ItemPRICE 和 ItemQTY 列的其他 INVOICEitems。通过 InvoiceNAME 字段连接的表。

我想从 INVOICES 表中选择 InvoiceSUM 不等于与 InvoiceNAME 相关的 ItemPRICE*ItemQTY 的总和的所有行。换句话说,我想列出不一致的记录,其中 InvoiceSUM 不等于项目总数。

【问题讨论】:

    标签: sql ms-access join sum subquery


    【解决方案1】:

    一种方法使用相关子查询:

    select i.*
    from invoices as i
    where i.invoicesum <> (select sum(ii.price * ii.quantity)
                           from INVOICEitems as ii
                           where ii.InvoiceNAME = i.InvoiceNAME
                          );
    

    【讨论】:

    • 就是这样,谢谢! (我需要将 i.ItemNAME 更正为 i.ID 以避免类型不匹配,但它就像一个魅力,谢谢!)
    【解决方案2】:

    您可能还希望在结果集中显示订单商品的值。如果是这样,连接更合适:

    select i.*, ii.item_sum
    from invoices as i
    inner join (
        select invoice_name, sum(item_qty * item_price) as item_sum
        from invoice_items
        group by invoice_name
    )  as ii on ii.invoice_name = i.invoice_name
    where i.invoice_sum <> ii.item_sum
    

    【讨论】:

    • 是的,您拥有绝对的权利!感谢您的解决方案!
    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2016-11-05
    • 2020-06-04
    • 1970-01-01
    • 2012-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多