【问题标题】:complex query in mysql for generating a report datewisemysql 中用于按日期生成报告的复杂查询
【发布时间】:2013-05-25 03:01:31
【问题描述】:

我在 mysql 中有以下表格:

salesinvoices(带有发票编号、分类帐和日期)

salesinvoiceitems(带有发票编号)

付款(带有发票编号、分类帐和日期)

现在我需要使用税收等的计算(表中包含的列),根据特定分类帐的特定 invoiceNumber 计算 salesinvoiceitems 表中的总金额。

然后,我有一个付款表,其中保存了针对特定发票日期进行的所有付款的记录。此表还包含发票编号和分类帐 ID。

我需要为显示期末余额的特定分类帐 ID 生成报告。我对这样的查询一无所知。请提供一些启示。

【问题讨论】:

  • 我是否可以建议将您的架构放在sqlfiddle.com 上以便更清楚一点?

标签: mysql sql codeigniter activerecord


【解决方案1】:

我假设您的 salesinvoiceitems 表有一个“金额”字段,以便我们可以计算每张发票的项目金额总和。在下面的示例中,我将该列称为“item_amt”。我们可以尝试做这样的事情......

select ledgerid , sum(balance) as total_balance
from 
-- sub query to calculate balance per invoice and ledgerid
(
select distinct 
 invoices.invoice_number, 
 invoices.ledgerid, 
 tot_item_amt, 
 tot_payment_amt, 
 (tot_item_amt - tot_payment_amt) as balance
from salesinvoices as invoices
-- sub query to get the sum of all the items on an invoice
inner join (select invoice_number, sum(item_amt) as tot_item_amt from salesinvoiceitems group by invoice_number) as items on invoices.invoice_number = items.invoice_number
-- sub query to get the sum of all the payments made against an invoice
inner join (select invoice_number, sum(payment_amt) as tot_payment_amt from payments group by invoice_number) as payments on invoices.invoice_number = payments.invoice_number
) t
-- sum balance and group by ledgerid
group by ledgerid 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    相关资源
    最近更新 更多