Sql 访问';13-无法识别字段名错误,交叉表报告问题 背景

Sql 访问';13-无法识别字段名错误,交叉表报告问题 背景,sql,ms-access,syntax-error,crosstab,Sql,Ms Access,Syntax Error,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是一个$Amount,Field2(在本例中)将是“Option1”、“Optio

每个月我都会运行一个交叉表查询,然后用一个访问报告“修饰”它

交叉表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是一个$Amount,Field2(在本例中)将是“Option1”、“Option2”或“Option3”

典型交叉表结果:

Date     Option1    Option2   Option3
-----    --------   --------  --------
Day1      $5.00      -$2.37   
Day2                  $3.15
Day3                           $2.22
我的问题 因为100次中有99次我会在一个月的每个“选项”中都有数据,所以我创建了一个报告,以“漂亮”的格式清理交叉表结果。然而,这个月,我的原始数据没有任何“选项3”值。因此,选项3的交叉表列不会出现在我的查询结果中。然后,由于报表直接从交叉表中提取&按名称查找每个选项列,这会导致我的报表中断,并给出错误:

Microsoft Access数据库引擎无法将“[Option3]”识别为 有效的字段名或表达式

故障排除 关于故障排除,我尝试了一些方法:

  • =Nz(总和(myTable.Field1),0)在SQL。。。然而,这只会产生0,其中字段2的现有值为NULL,因此“Option3”不会显示为所有0的列
  • =Nz([Option3],0)在报告中。。。仍然获取上述错误(无法识别字段)
  • =报告中的IIf(iError(选项3),0,(选项3))。。。获取错误信息:
  • 您输入的表达式包含无效语法

  • =报告中的IIf(IsEmpty(Option3),0,(Option3))。。。同上
  • =报告中的IIf(IsMissing(选项3),0,(选项3))。。。同上
  • 此时,我不知道如何运行现有报告(仅显示“Option3”的0列)。

    PIVOT
    子句的
    列表中显示

    PIVOT myTable.Field2位于('Option1','Option2','Option3');
    
    然后,这些列标题将包含在查询结果集中(按列出的顺序),而不管源数据是否包含具有这些值的任何行

    一个副作用是,如果交叉表数据源可能包含选项4,它将不会包含在结果列中。这对你的报告来说是很好的,因为它的设计不是为了期望一个Option4列。但如果您在其他地方使用交叉表查询,则可能会引起关注


    在报告中,您可以使用
    Nz()
    将选项列中的空值替换为零。

    有人告诉过您您很出色吗?真不敢相信我竟然没有想到要这么做(有时我太专注于访问功能,以至于无法思考正常的SQL)。。。但这很有魅力,谢谢你!从来没有!:-)当我希望月名交叉表列按月份顺序而不是字母顺序出现时,我发现了这个特性。因此,它之所以有用,原因不止一个。你好,这是一个很好的解决方案,汉瑟普!地雷是由使用公式选择值的复杂列引起的。PIVOT查询似乎不喜欢过于复杂。现在我在报告中进行了计算。关于列是否有值,我在报告中使用代码隐藏(.rdlc)中的Try…Catch语句管理我的列,只需跳过试图获取数据的代码。我已经尝试了几种方法,我似乎没有因为列没有值而得到您的错误;您可能还需要检查列中的其他复杂公式……以及解决方案中提到的限制,难道不能使用单独的查询以所需格式提供列吗?从表中选择颜色。将它们格式化为字符串数组,然后将其提供给语句。。。只是想它能起作用。。。