У меня есть 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.Первоначально это было пустым.Итак, я изменил это на истину.Перезапущен был.И я не мог войти в наше приложение.SQLExceptions были выброшены WAS, но не смогли увидеть трассировку стека, потому что WAS урезал последние несколько строк.После изменения свойства обратно на пустое я смог войти в наше приложение.