【发布时间】:2016-06-15 18:35:29
【问题描述】:
背景
每个月我都会运行一个交叉表查询,然后使用访问报告“完善”该查询。
CROSSTAB SQL:
TRANSFORM Sum(myTable.Field1) AS SumOfField1
SELECT myTable.Date, Sum(myTable.Field1) AS [Daily Totals]
FROM myTable
GROUP BY myTable.Date
PIVOT myTable.Field2;
其中 Field1 是 $ 金额,而 Field2(对于本示例)将是“Option1”、“Option2”或“Option3”。
典型的交叉测试结果:
Date Option1 Option2 Option3
----- -------- -------- --------
Day1 $5.00 -$2.37
Day2 $3.15
Day3 $2.22
我的问题
因为 100 次中有 99 次在给定月份的每个“选项”中都有数据,所以我创建了一个以“漂亮”格式清理交叉表结果的报告。然而,这个月,我的原始数据没有任何“Option3”值。因此,我的查询结果中没有出现 Option3 的交叉表列。然后,由于报告直接从交叉表中提取并按名称查找每个选项列,这会导致我的报告中断并给出错误:
Microsoft Access 数据库引擎无法将“[Option3]”识别为 有效的字段名称或表达式。
疑难解答
我尝试了一些关于故障排除的方法:
-
SQL 中的
- =Nz(Sum(myTable.Field1),0)... 但是这只会产生 0,其中 field2 的 现有 值为 NULL - 因此“Option3”不会显示为一列全为 0。
- =Nz([Option3],0) 在报告中...仍然得到上面的错误(字段无法识别)
- =IIf(IsError(Option3),0,(Option3)) 在报告中...得到错误:
您输入的表达式包含无效语法
- =IIf(IsEmpty(Option3),0,(Option3)) in report... 同上
- =IIf(IsMissing(Option3),0,(Option3)) in report... 同上
在这一点上,我不知道如何让我现有的报告运行(只为“Option3”显示一列 0)。
【问题讨论】:
标签: sql ms-access syntax-error crosstab