【发布时间】:2011-12-22 04:30:01
【问题描述】:
我有一个 SQL,我试图在 Informix 中运行,但它不断提示“语法错误”或“列 (...) 无法在表中找到..”。
我的查询如下:
SELECT SLS.STORE, ITM.CLASS, SUM(SLS.SLS_QTY) AS SUM_SLS_QTY,
SUM(SLS.SLS_COST) AS SUM_SLS_COST, SUM(SLS.SLS_SELL) AS SUM_SLS_SELL
FROM SLSDATE SLS, ITEMMST ITM
WHERE SLS.STORE = '1001' AND SLS.SHORT_SKU = ITM.SHORT_SKU AND
SLS.SALES_TRANS_DATE BETWEEN
TO_DATE('2011-04-01', '%Y-%m-%d') AND TO_DATE('2011-04-10', '%Y-%m-%d')
GROUP BY SLS.STORE, ITM.CLASS
ORDER BY SLS.STORE, ITM.CLASS;
当我运行上面的查询时,informix 说“在查询的任何表中都找不到列(类)(或 SLV 未定义)”。
当我将 ITM.CLASS 更改为 ITM."CLASS"(如下所示)时,它在 GROUP BY 子句处显示语法错误。
SELECT SLS.STORE, ITM."CLASS", SUM(SLS.SLS_QTY) AS SUM_SLS_QTY,
SUM(SLS.SLS_COST) AS SUM_SLS_COST, SUM(SLS.SLS_SELL) AS SUM_SLS_SELL
FROM SLSDATE SLS, ITEMMST ITM
WHERE SLS.STORE = '1001' AND SLS.SHORT_SKU = ITM.SHORT_SKU AND
SLS.SALES_TRANS_DATE BETWEEN
TO_DATE('2011-04-01', '%Y-%m-%d') AND TO_DATE('2011-04-10', '%Y-%m-%d')
GROUP BY SLS.STORE, ITM."CLASS"
^ syntax error here
ORDER BY SLS.STORE, ITM."CLASS";
然后我把 GROUP BY 子句改成用数字来表示列,就可以执行了。
SELECT SLS.STORE, ITM."CLASS", SUM(SLS.SLS_QTY) AS SUM_SLS_QTY,
SUM(SLS.SLS_COST) AS SUM_SLS_COST, SUM(SLS.SLS_SELL) AS SUM_SLS_SELL
FROM SLSDATE SLS, ITEMMST ITM
WHERE SLS.STORE = '1001' AND SLS.SHORT_SKU = ITM.SHORT_SKU AND
SLS.SALES_TRANS_DATE BETWEEN
TO_DATE('2011-04-01', '%Y-%m-%d') AND TO_DATE('2011-04-10', '%Y-%m-%d')
GROUP BY 1, 2
ORDER BY SLS.STORE, ITM."CLASS";
目前我不明白为什么 GROUP BY 子句有问题。
更新 1 itemmst 表架构如下所示
create table 'informix'.itemmst (
short_sku VARCHAR(13) not null,
item_desc lvarchar(2000),
item_del_cd VARCHAR(1),
item_suppl VARCHAR(10),
item_suppl_contract VARCHAR(10),
div VARCHAR(3),
dept VARCHAR(3),
CLASS VARCHAR(6),
..
)
更新 2 我对 WAS 数据源的一个自定义属性 ifxDELIMIDENT 进行了更改。原来是空白的。所以,我把它改成了真的。重新启动 WAS。而且我无法登录我们的应用程序。 SQLExceptions 由 WAS 引发,但无法查看堆栈跟踪,因为 WAS 已截断最后几行。将属性改回空白后,我能够登录到我们的应用程序。
【问题讨论】:
-
请提供 SLSDate 和 ItemMST 表(相关部分)的架构。
-
刚刚用表架构更新了我的问题
-
感谢架构信息。不能透露服务器版本或平台信息吗?
-
服务器是 AIX 7,Informix 版本是 11
-
请注意我的回答中的评论:您需要确定您正在使用的 Informix 版本(在最后一个小数点后的最后一位数字下 - 如果是 11.50.UC9W1X1那是你的版本).
标签: sql select group-by informix