【问题标题】:SQL query access pivot - error message 'field that has an invalid data type'SQL 查询访问数据透视 - 错误消息“具有无效数据类型的字段”
【发布时间】:2014-07-31 10:26:21
【问题描述】:

我正在 MS Access 上运行 SQL 查询。

查询如下所示:

TRANSFORM MIN(X_VALUE*MULTIPLE & ' ' & Y_VALUE)
SELECT A.ID
FROM ((MY_TABLE_A A
       INNER JOIN MY_TABLE_B B ON B.ID = A.ID)
      INNER JOIN MY_TABLE_C C ON C.FOO1_ID = A.FOO1_ID)
LEFT JOIN MY_TABLE_D D ON A.FOO2_ID = D.FOO2_ID 

WHERE A.NUM ='FOO' AND A.FOO_ID0 AND FOO3=1

GROUP BY A.ID PIVOT X_NAME IN('BLAH1', 'BLAH2')

当对本地 MDB 文件运行时,它可以工作。 当针对 Linked MDB(表链接到远程 Oracle DB)运行它时,我得到了

ERROR [42000] [Microsoft][ODBC Microsoft Access Driver] Microsoft Access 数据库引擎无法执行 SQL 语句,因为它 包含具有无效数据类型的字段。

我用谷歌搜索了它,找不到任何有用的东西。

知道我能做什么吗? 谢谢。

【问题讨论】:

  • 您可以编辑您的帖子以显示您用于执行此查询的连接字符串吗?
  • 两个 MDB 的连接字符串是相同的 - 我只是在文件(链接和未链接)之间切换。你认为它相关吗?
  • 将链接表的数据类型与本地数据类型进行比较可能会提供一些线索。 A.NUM的数据类型是什么?
  • @rontornambe - 谢谢!但我试图删除所有 WHERE 条件,它给出了同样的错误。
  • 让我知道 Oracle 中这 3 个字段的数据类型以及 MS Access X_VALUE、MULTIPLE、Y_VALUE 中的数据类型。 MS Access 表和 Oracle 表的隐式数据类型转换或数据本身可能不同。您可以对链接表运行以下查询吗,如果连接的字段数据类型有任何问题,我们将理解 SELECT A.ID FROM ((MY_TABLE_A A INNER JOIN MY_TABLE_B B ON B.ID = A.ID) INNER JOIN MY_TABLE_C C ON C.FOO1_ID =A.FOO1_ID) LEFT JOIN MY_TABLE_D D ON A.FOO2_ID = D.FOO2_ID GROUP BY A.ID PIVOT X_NAME IN('BLAH1', 'BLAH2')

标签: ms-access pivot-table linked-tables


【解决方案1】:

查询中唯一甚至模糊地似乎会导致数据类型问题的语句是转换语句中的混合类型。也许以下方法会起作用:

TRANSFORM MIN(CSTR(X_VALUE*MULTIPLE) & ' ' & CSTR(Y_VALUE))

【讨论】:

  • 谢谢。我已经测试了链接和非链接。两者都给出了相同的错误 - Invalid use of Null 没有任何其他信息。但我想这是正确的方向
  • 中间的 Y_VALUE 列类型和未链接的列类型之间存在差异。 (备忘录与文本)。我最终得到了CSTR(IIF(Y_VALUE IS NULL, '', Y_VALUE))。它可以工作,但速度极慢。
  • 很遗憾,由于 IIf 不是标准的 SQL 函数,因此 ODBC 正在强制将所有数据传输到本地计算机,因此整个查询必须由 Access 处理。要解决性能问题,您需要将查询转换为 Oracle 数据透视查询并使用 Access 传递查询机制调用它。
  • 谢谢。您能否提供一个简短的示例,如何在 Oracle 服务器上运行查询?
  • 如果您在 Google 上搜索“ms access create pass through query”和/或“ms access vba run pass through query”,您会发现很多关于如何执行此操作的示例。
猜你喜欢
  • 2019-11-21
  • 2015-02-28
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 1970-01-01
相关资源
最近更新 更多