我正在尝试进行内部联接并在其上添加一个 where 子句。
where 子句是 API 调用给出的数字,并检索一个人写的字母。
当我添加 MATCHING where 子句时它不起作用。
这是sql查询:
SELECT IDLETTRE, IDPATIENT, NUMINAMI, DATELETTRE, FILEDEST,
PBNAME
FROM
MEDLIB.OVLETTRES INNER JOIN MEDCPOF.SPTML0 ON
IDPATIENT = SPTML0.DZL6
where NUMINAMI = '16721216370'
告诉我错误:涉及字段 *N 的选择错误。
当我添加一个不匹配的 where 子句时,它会按预期给出我的和空的行响应...
SELECT IDLETTRE, IDPATIENT, NUMINAMI, DATELETTRE, FILEDEST,
PBNAME
FROM
MEDLIB.OVLETTRES INNER JOIN MEDCPOF.SPTML0 ON
IDPATIENT = SPTML0.DZL6
where NUMINAMI = '123'
我无法想象 DB2 不处理带有 where 子句的简单内连接...
有人可以帮我吗?
谢谢。
托马斯。
带有 where 子句的内连接 DB2 SQL 查询。
我期望具有 where 条件的行而不是错误..
简短的回答,是的,
WHERE
与JOIN
一起使用时效果很好。
长答案是您的文件中存在一些错误数据。可能是带有字符数据的数字字段。
您的作业日志应该有一个
CPD4019
,其中包含更多信息,包括不良数据的相对记录编号。
假设您使用的是受支持的操作系统版本并且已修复最新版本,您可以使用 VALIDATE_DATA 存储过程来检查无效数据。
SELECT * FROM TABLE(SYSTOOLS.VALIDATE_DATA_FILE('MEDLIB', 'OVLETTRES'));
SELECT * FROM TABLE(SYSTOOLS.VALIDATE_DATA_FILE('MEDCPOF', 'SPTML0'));