尽管我使用了别名,但列定义不明确

问题描述 投票:0回答:1

我正在使用 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 hana
1个回答
1
投票

根据评论中的讨论,如果以下代码返回错误

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,例如

ORDER BY "<column_name>"
并且执行失败并出现错误 "column ambiguously defined",你需要修改语句以包含表名,例如 `ORDER BY .""

这也是一个大问题,因为此查询返回错误

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 系统视图

© www.soinside.com 2019 - 2024. All rights reserved.