我想对过去两年内订购过的任何客户的销售情况生成一份报告。
我可以运行两年内所有发票的报告,然后删除 Excel 中的重复项,但我宁愿直接在 (Firebird) SQL 中执行此操作
我可以使用WHERE date < 1 Jan 2015
(2年或更久),但是我如何让它只向客户展示一次?我想如果我使用 MAX(Date)
因此显示该两年期间的最近日期。我哪里出错了?我相信我需要使用 UNIQUE()
功能类似于 UNIQUE(ORDERCUSTOMER)
在 SELECT 子句中。
SELECT
FINANCIALSALESINVOICES.TRANSACTIONDATE,
FINANCIALSALESINVOICES.INVOICECUSTOMER,
FINANCIALSALESINVOICES.ORDERCUSTOMER,
FINANCIALSALESINVOICES.INVOICENUMBER,
FINANCIALSALESINVOICES.SOURCENUMBER,
MAX(FINANCIALSALESINVOICES.TRANSACTIONDATE)
FROM FINANCIALSALESINVOICES
WHERE (FINANCIALSALESINVOICES.TRANSACTIONDATE>={d '2015-01-01'})
ORDER BY FINANCIALSALESINVOICES.INVOICECUSTOMER, FINANCIALSALESINVOICES.TRANSACTIONDATE
我确实显示了过去两年中每个发票实例的最大日期,但现在无法修改该文件或复制它。
最佳答案
一种方法是在 WHERE
子句中使用子查询来检查最新的发票:
SELECT
t.TRANSACTIONDATE,
t.INVOICECUSTOMER,
t.ORDERCUSTOMER,
t.INVOICENUMBER,
t.SOURCENUMBER
FROM FINANCIALSALESINVOICES t
WHERE t.TRANSACTIONDATE >= date '2015-01-01' AND
t.TRANSACTIONDATE = (SELECT MAX(f.TRANSACTIONDATE)
FROM FINANCIALSALESINVOICES f
WHERE t.ORDERCUSTOMER = f.ORDERCUSTOMER AND
f.TRANSACTIONDATE >= date '2015-01-01')
ORDER BY t.INVOICECUSTOMER,
t.TRANSACTIONDATE
关于sql - FirebirdSQL Unique & Max(或 MaxValue),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43905031/