gpt4 book ai didi

sql - 计算与先前记录的差异

转载 作者:行者123 更新时间:2023-12-04 14:39:22 26 4
gpt4 key购买 nike

我可以请你帮忙解决以下问题吗?

我正在尝试计算结果中从一个记录到下一个记录的变化。如果我向您展示我当前的查询和结果,它可能会有所帮助...

SELECT A.AuditDate, COUNT(A.NickName) as [TAccounts],
SUM(IIF((A.CurrGBP > 100 OR A.CurrUSD > 100), 1, 0)) as [Funded]
FROM Audits A
GROUP BY A.AuditDate;

查询给了我这些结果......
AuditDate D/M/Y         TAccounts     Funded                    
--------------------------------------------
30/12/2011 506 285
04/01/2012 514 287
05/01/2012 514 288
06/01/2012 516 288
09/01/2012 520 289
10/01/2012 522 289
11/01/2012 523 290
12/01/2012 524 290
13/01/2012 526 291
17/01/2012 531 292
18/01/2012 532 292
19/01/2012 533 293
20/01/2012 537 295

理想情况下,我想得到的结果类似于以下内容......
AuditDate D/M/Y         TAccounts     TChange   Funded           FChange
------------------------------------------------------------------------
30/12/2011 506 0 285 0
04/01/2012 514 8 287 2
05/01/2012 514 0 288 1
06/01/2012 516 2 288 0
09/01/2012 520 4 289 1
10/01/2012 522 2 289 0
11/01/2012 523 1 290 1
12/01/2012 524 1 290 0
13/01/2012 526 2 291 1
17/01/2012 531 5 292 1
18/01/2012 532 1 292 0
19/01/2012 533 1 293 1
20/01/2012 537 4 295 2

查看“17/01/2012”行,“TChange”的值为 5,因为“TAccounts”已从之前的 526 增加到 531。“FChange”将基于“Funded”字段。我想需要注意的是,此示例的前一行日期为“13/01/2012”。我的意思是,有些日子我没有数据(例如周末)。

我想我需要使用子查询,但我真的很难弄清楚从哪里开始。你能告诉我如何获得我需要的结果吗?

我正在使用 MS Access 2010

非常感谢您的时间。

强尼。

最佳答案

这是您可以尝试的一种方法......

SELECT B.AuditDate,B.TAccounts,
B.TAccount -
(SELECT Count(NickName) FROM Audits WHERE AuditDate=B.PrevAuditDate) as TChange,
B.Funded -
(SELECT Count(*) FROM Audits WHERE AuditDate=B.PrevAuditDate AND (CurrGBP > 100 OR CurrUSD > 100)) as FChange
FROM (
SELECT A.AuditDate,
(SELECT Count(NickName) FROM Audits WHERE AuditDate=A.AuditDate) as TAccounts,
(SELECT Count(*) FROM Audits WHERE (CurrGBP > 100 OR CurrUSD > 100)) as Funded,
(SELECT Max(AuditDate) FROM Audits WHERE AuditDate<A.AuditDate) as PrevAuditDate
FROM
(SELECT DISTINCT AuditDate FROM Audits) AS A) AS B

而不是使用 Group By我使用子查询来获取 TAccounts 和 Funded,以及上一个审计日期,然后在主 SELECT 上使用它。语句以再次获取 TAccounts 和 Funded,但这次是针对前一个日期,以便可以对它们进行任何所需的计算。

但我想这可能处理起来很慢

关于sql - 计算与先前记录的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8961948/

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