0

我对链接的 DB2 表有一个相当简单的查询。

SELECT GC_TBSELC.*
FROM GC_TBSELC
WHERE SELC_EFF_DATE > #1/1/2017#;

工作正常,返回结果。但是,当我添加“DISTINCT”关键字时,出现错误:

ODBC——调用失败

[[IBM][CLI Driver][DB2] SQL0904N 由于资源不可用导致执行不成功。原因码:“00C90305”,资源类型:“00000100”,资源名称:“DSNDB07”。SQLSTATE=57011

关于为什么“DISTINCT”关键字会导致这种情况的任何想法,以及是否有办法从表中获取不同的记录?

4

2 回答 2

2

SQL0904N with Reason code: 00C90305表示以下内容:

超出了代理对工作文件存储的空间使用限制。空间使用限制由 zparm 关键字 MAXTEMPS 确定。

通过在(所有列)上添加DISTINCT子句SELECT *,您可能超出了可用的工作空间。

让我问一个更好的问题:为什么DISTINCT要从一个表中获取所有列?这真的是您正在寻找的结果集吗?是否更适合DISTINCT此表中的列子集?

于 2019-08-15T17:16:35.807 回答
0

没有 DISTINCT 的查询不需要重复删除 - 行可以流回调用者。

DISTINCT 告诉 Db2 - 在传回行之前删除重复项。在这种情况下,Db2 可能将行具体化为排序工作并进行排序以删除重复项,并且在该过程中,超出了排序工作限制。

于 2019-08-19T18:02:54.070 回答