【问题标题】:Select from multi access tables从多访问表中选择
【发布时间】:2017-11-14 10:37:51
【问题描述】:

尝试获取此查询的结果:

SELECT DISTINCT
       invoices.invoice_id,
       invoices.customer,
       invoices.total,
       SUM(pay_amount) AS paid
FROM invoices,
     invoice_payment
WHERE invoices.invoice_id = invoice_payment.invoice_id
      AND invoices.type = 'client'
      AND invoice_payment.pay_type <> 'postpaid'
      AND format(invoices.create_date, "dd/mm/yyyy") BETWEEN '01/11/2017' AND '14/11/2017';

我明白了

"您的查询不包含特定表达式 'invoice_id' 作为 聚合函数的一部分”

【问题讨论】:

    标签: sql vb.net ms-access


    【解决方案1】:

    在聚合数据时添加GROUP BY,例如计数,总和等

    像这样:

    SELECT DISTINCT
           invoices.invoice_id,
           invoices.customer,
           invoices.total,
           SUM(pay_amount) AS paid
    FROM invoices,
         invoice_payment
    WHERE invoices.invoice_id = invoice_payment.invoice_id
          AND invoices.type = 'client'
          AND invoice_payment.pay_type <> 'postpaid'
          AND format(invoices.create_date, "dd/mm/yyyy") BETWEEN '01/11/2017' AND '14/11/2017'
    GROUP BY invoices.invoice_id,
             invoices.customer,
             invoices.total;
    

    GROUP BY 的 Access 文档是 here

    还要尽量避免使用旧式连接,它们既讨厌又过时。这样会好很多:

    FROM invoices
    INNER JOIN invoice_payment ON invoices.invoice_id = invoice_payment.invoice_id
    

    【讨论】:

    • 我真的不知道这意味着什么......如果您添加一些示例数据,那么它会更有意义。您希望它显示什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-05
    • 1970-01-01
    相关资源
    最近更新 更多