Я использую Informix версии 11.50.FC6 через iSql
Я даю результат блока CASE
виртуальному имени, att_hrs
SELECT c.id,
CASE WHEN ( c.prog = 'UNDG'
AND (c.grd IN (SELECT DISTINCT grd FROM grd_table WHERE att_fctr = 1) OR (c.grd IN ('TR','W','LAB','WC')))
AND c.grd NOT IN ('WM')
AND c.stat NOT IN ('X','D'))
THEN CAST(SUM(c.hrs) AS CHAR(4))
ELSE 'ELSED (att)'
END att_hrs
FROM cw_rec c
WHERE c.id IN (SELECT DISTINCT id FROM stu_ids)
GROUP BY c.id
INTO TEMP cheese
WITH NO LOG;
Это дает мне ошибку:
294: The column (att_hrs) must be in the GROUP BY list.
Попытка исправить ошибку как предложено:
SELECT c.id,
CASE WHEN ( c.prog = 'UNDG'
AND (c.grd IN (SELECT DISTINCT grd FROM grd_table WHERE att_fctr = 1) OR (c.grd IN ('TR','W','LAB','WC')))
AND c.grd NOT IN ('WM')
AND c.stat NOT IN ('X','D'))
THEN CAST(SUM(c.hrs) AS CHAR(4))
ELSE 'ELSED (att)'
END att_hrs
FROM cw_rec c
WHERE c.id IN (SELECT DISTINCT id FROM stu_ids)
GROUP BY c.id,
att_hrs
INTO TEMP cheese
WITH NO LOG;
Затем выдает мне эту ошибку:
217: Column (att_hrs) not found in any table in the query (or SLV is undefined).
Они как-то нашли att_hrs
довольно легко, когда его не было на GROUP BY
вечеринке, но теперь внезапно att_hrs
теряется в соусе ...
Можете ли вы обойтиэтот?
Каковы реальные ошибки и |Решения о том, что здесь происходит, и что мне нужно сделать, чтобы это исправить?
РЕДАКТИРОВАТЬ Я попробовал решение RET для
GROUP BY 1,2,3...
и получил следующую ошибку:
321: Cannot group by aggregate column.