gpt4 book ai didi

MySQL 帮助 : Return invoices and payments by date

转载 作者:行者123 更新时间:2023-11-30 23:11:42 25 4
gpt4 key购买 nike

我无法让 MySQL 查询为我工作。这是设置。

一位客户要求我根据一些会计数据编制一份报告。他想选择一个日期(可能还有其他条件)并让它返回以下所有内容(一个 OR 语句):1.) 在该日期或之后插入的所有发票2.) 所有发票,无论其插入日期如何,在单独的表格中都有相应的付款,其插入日期在所选日期或之后。

第一个子句是基本的,但我无法将它与第二个子句配对。

我在 SQL Fiddle 中收集了一组可比较的测试数据。提供了我当前的查询。 http://www.sqlfiddle.com/#!2/d8d9c/3/2

正如 fiddle 的评论中所指出的,我将 2013 年 7 月 1 日作为我选择的日期。为了使测试正常进行,我需要显示发票 1 到 5,而不是发票 #6。

最佳答案

试试这个:http://www.sqlfiddle.com/#!2/d8d9c/9以下是总结的变化

  1. 我去掉了你的GROUP BY。您没有任何聚合函数。我使用 DISTINCT 来消除重复记录
  2. 为了便于阅读,我删除了您的隐式连接并在其位置放置了显式连接。然后我将它们更改为 LEFT JOIN。我不确定您的数据是什么样的,但至少,如果您想选择没有付款的发票,我假设您需要付款 LEFT JOINed。
  3. 这可能会为您提供所需的记录,但是 SELECT 子句中的那些子选择作为 LEFT JOIN 可能会比使用 SUM 函数执行得更好

这里是查询

SELECT DISTINCT
a.abbr landowner,
CONCAT(f.ForestLabel, '-', l.serial, '-', l.revision) leasenumber,
i.iid,
FROM_UNIXTIME(i.dateadded,'%M %d, %Y') InvoiceDate,
(SELECT IFNULL(SUM(ch.amount), 0.00) n FROM test_charges ch WHERE ch.invoiceid = i.iid) totalBilled,
(SELECT SUM(p1.amount) n FROM test_payments p1 WHERE p1.invoiceid = i.iid AND p1.transtype = 'check' AND p1.status = 2) checks,
(SELECT SUM(p1.amount) n FROM test_payments p1 WHERE p1.invoiceid = i.iid AND p1.transtype = 'ach' AND p1.status = 2) ach,
CASE WHEN i.totalbilled < 0 THEN i.totalbilled * -1 ELSE 0.00 END credits,
CASE WHEN i.balance >= 0 THEN i.balance ELSE 0.00 END balance,
t.typelabel, g.groupname
FROM test_invoices i
LEFT JOIN test_contracts c
ON i.contractid = c.cid
LEFT JOIN test_leases l
ON c.leaseid = l.bid
LEFT JOIN test_forest f
ON l.forest = f.ForestID
LEFT JOIN test_leasetypes t
ON l.leasetype = t.tid
LEFT JOIN test_accounts a
ON l.account = a.aid
LEFT JOIN test_groups g
ON c.groupid = g.gid
LEFT JOIN test_payments p
ON p.invoiceid = i.iid
WHERE (i.dateadded >= @startdate) OR (p.dateadded >= @startdate)

关于MySQL 帮助 : Return invoices and payments by date,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com