我正在使用 SAP HANA 数据库,这是我的查询:
SELECT
"DocNum", T0."createDate",
T0."resolution",
T0."description"
FROM
T.PDVQ T0
LEFT OUTER JOIN
T.POYN T1 ON T1."It" = T0."i"
LEFT OUTER JOIN
T.PDVD T2 ON T2."stat" = T0."status"
LEFT JOIN
T.PIDT T3 ON T0."assignee" = T3.USER
LEFT JOIN
T.PJRQ T4 ON T0."tech" = T4."empID"
ORDER BY
"DocNum" DESC
LIMIT 10
我可以看到 T0 列下的值。“createDate”但不是 T0“resolution”和 T0“description”。
除了我收到这个错误:
odbc_result():SQL 错误:[SAP AG][LIBODBCHDB DLL][HDBODBC] 一般错误;268 列定义不明确:createDate
如果我从查询中删除
T0."createDate"
,我可以看到 T0."resolution" 和 T0."description" 下的值没有任何错误。
这可能是什么原因?我需要在同一个查询中,我该如何解决?
编辑:一切还是一样
SELECT
"DocNum", T0."createDate",
T0."resolution",
T0."description"
FROM
T.PDVQ T0
ORDER BY
"DocNum" DESC
LIMIT 10
T1
和T0
都有createDate
T0."DocNum" 没有任何区别
编辑: 根据我的观察,查询没有任何问题,因为它在 SAP 本身上运行。 odbc 似乎忽略了别名。
根据评论中的讨论,如果以下代码返回错误
odbc_result(): SQL error: [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;268 column ambiguously defined: createDate
,则意味着您的 HANA 软件(无论是 HANA Studio 还是 HANA 数据库系统)出现了大问题,您应该重新安装。
SELECT
T0."DocNum", T0."createDate",
T0."resolution",
T0."description"
FROM
T.PDVQ T0
ORDER BY
T0."DocNum" DESC
LIMIT 10
注意在
所有地方使用表名或别名(在上面的查询中
T0
)根据SAP说明指示“DocNum”2695943 - SQL失败并出现错误“column ambiguously defined” :
"【通过HANA studio SQL控制台或hdbsql执行时】使用列时,需要定义表名,否则会出现"column ambiguously defined"的错误信息..."
"如果你的 SQL 语句包含 column_name,例如
并且执行失败并出现错误 "column ambiguously defined",你需要修改语句以包含表名,例如 `ORDER BYORDER BY "<column_name>"
." “"
这也是一个大问题,因为此查询返回错误
invalid column name error
无论您为“MY_TABLE”指定什么:
SELECT T.COLUMN_NAME, T.DATA_TYPE_NAME
FROM SYS.TABLE_COLUMNS T
WHERE T.TABLE_NAME = 'MY_TABLE';
(参考:TABLE_COLUMNS 系统视图)