Countif 和 Sumif 作为 Access 中 SQL Select 查询的一部分
Countif and Sumif as Part of an SQL Select Query in Access
我的任务是创建一个 Access 数据库来处理拖欠税款数据。如果我在 Excel 中工作,我确切地知道如何使用我的 Table1(下方)创建我的 FinalTable(也在下方),但 Access 没有相同的 countif和 sumif 函数,据我所知,不允许您在查询中 引用其他列 ,现在我被卡住了.这是我的数据集的简化版本。
表 1
FY
Parcel
Delinquent_1
Delinquent_2
Delinquent_Sum
2020
1-19A
0.00
0.00
00.00
2020
1-20-2
[=13=].00
0.00
0.00
2021
1-20-2
0.00
0.00
00.00
2022
1-20-2
0.00
0.00
00.00
2022
1-20-5
[=13=].00
[=13=].00
[=13=].00
我需要编写某种查询才能获得以下结果。
决赛桌
Year
NumDelinqParcels
TotalDelinquent1
TotalDelinquent2
TotalUnpaid
2020
2
0.00
00.00
00.00
2021
1
0.00
0.00
00.00
2022
1
0.00
0.00
00.00
要提供更多详细信息,NumDelinqParcels 应显示给定年份 Delinquent_Sum > 0.00 美元的地块数量。 TotalDelinquent1 将添加给定年份的 Delinquent_1 列。 TotalDelinquent2 将添加给定年份的 Delinquent_2 列。 TotalUnpaid 将汇总 TotalDelinquent1 和 TotalDelinquent2。
如果我在 Excel 工作,我的 NumDelinqParcels 可以用 countif 语句填充,我的 TotalDelinquent1 和 TotalDelinquent2 可以用 sumif 语句填充。我无法让这些在 Access 中工作。
对于 TotalDelinquent1,我可以达到:
子查询 1
SELECT Sum(Iif(FY = "2020" and Delinquent_Sum <> 0, Delinquent_1, 0)) from Table1
然后我可以把它变成像 SELECT FY 作为“Year”,Subquery1 作为“TotalDelinquent1”等等 我的最终 table。
Subquery1 的问题在于它是静态的。我无法只查看第一列中的年份并将其填写为“FY =”部分。也许我走错了方向。
非常感谢任何建议!
对我来说看起来像是一个简单的聚合 (GROUP BY) 查询。
Delinquent_Sum不应该是table中的字段,应该是查询时计算出来的。如果要按 FY 动态过滤,请使用 WHERE 子句。下面演示了带有 FY 弹出输入提示的查询。我不使用弹出提示。我更喜欢使用 VBA 来构建过滤条件并在打开时应用于表单或报告。
SELECT FY, Count(*) AS NumDelinqParcels, Sum(Delinquent_1) AS TotalDelinq1,
Sum(Delinquent_2) AS TotalDelinq2, Sum(Delinquent_1 + Deliinquent_2) AS TotalUnpaid
FROM Table1
WHERE FY=[enter year]
GROUP BY FY;
我的任务是创建一个 Access 数据库来处理拖欠税款数据。如果我在 Excel 中工作,我确切地知道如何使用我的 Table1(下方)创建我的 FinalTable(也在下方),但 Access 没有相同的 countif和 sumif 函数,据我所知,不允许您在查询中 引用其他列 ,现在我被卡住了.这是我的数据集的简化版本。
表 1
FY | Parcel | Delinquent_1 | Delinquent_2 | Delinquent_Sum |
---|---|---|---|---|
2020 | 1-19A | 0.00 | 0.00 | 00.00 |
2020 | 1-20-2 | [=13=].00 | 0.00 | 0.00 |
2021 | 1-20-2 | 0.00 | 0.00 | 00.00 |
2022 | 1-20-2 | 0.00 | 0.00 | 00.00 |
2022 | 1-20-5 | [=13=].00 | [=13=].00 | [=13=].00 |
我需要编写某种查询才能获得以下结果。
决赛桌
Year | NumDelinqParcels | TotalDelinquent1 | TotalDelinquent2 | TotalUnpaid |
---|---|---|---|---|
2020 | 2 | 0.00 | 00.00 | 00.00 |
2021 | 1 | 0.00 | 0.00 | 00.00 |
2022 | 1 | 0.00 | 0.00 | 00.00 |
要提供更多详细信息,NumDelinqParcels 应显示给定年份 Delinquent_Sum > 0.00 美元的地块数量。 TotalDelinquent1 将添加给定年份的 Delinquent_1 列。 TotalDelinquent2 将添加给定年份的 Delinquent_2 列。 TotalUnpaid 将汇总 TotalDelinquent1 和 TotalDelinquent2。
如果我在 Excel 工作,我的 NumDelinqParcels 可以用 countif 语句填充,我的 TotalDelinquent1 和 TotalDelinquent2 可以用 sumif 语句填充。我无法让这些在 Access 中工作。
对于 TotalDelinquent1,我可以达到:
子查询 1
SELECT Sum(Iif(FY = "2020" and Delinquent_Sum <> 0, Delinquent_1, 0)) from Table1
然后我可以把它变成像 SELECT FY 作为“Year”,Subquery1 作为“TotalDelinquent1”等等 我的最终 table。
Subquery1 的问题在于它是静态的。我无法只查看第一列中的年份并将其填写为“FY =”部分。也许我走错了方向。
非常感谢任何建议!
对我来说看起来像是一个简单的聚合 (GROUP BY) 查询。
Delinquent_Sum不应该是table中的字段,应该是查询时计算出来的。如果要按 FY 动态过滤,请使用 WHERE 子句。下面演示了带有 FY 弹出输入提示的查询。我不使用弹出提示。我更喜欢使用 VBA 来构建过滤条件并在打开时应用于表单或报告。
SELECT FY, Count(*) AS NumDelinqParcels, Sum(Delinquent_1) AS TotalDelinq1,
Sum(Delinquent_2) AS TotalDelinq2, Sum(Delinquent_1 + Deliinquent_2) AS TotalUnpaid
FROM Table1
WHERE FY=[enter year]
GROUP BY FY;