Итак, у меня есть эта команда оболочки, которая создает CSV из выбора, но это не очень важно. Проблема, которую я имею, состоит в том, что одно из полей, которые я выбираю, является целочисленным полем, работающим как поле даты ггггммдд. Поэтому я хочу выбрать поле / 100, чтобы получить ггггмм, сгруппировать его и остальные поля и суммировать последнее.
SELECT trim(a.F1)||chr(44)||trim(b.F2)||chr(44)||trim(F3)||chr(44)
||trim(F4)||chr(44)|||CAST(plandate/100 AS INT)||chr(44)
||trim(F5)||chr(44)||trim(F6)||chr(44)||trim(true_dem)
as "F1, F2, F3, F4, YYYYMM, F5, F6, MONTHLY_DEMAND"
from T1 a
join T2 b on a.ASDF = b.ASDF
WHERE PLANDATE > 20180400
Итак, как вы можете видеть прямо сейчас, я беру все даты после определенной даты, но у меня нет группы по логике, причина этого в том, что я могу группировать по всем "F "поля, но я не знаю, что группировать для даты подачи, так как она рассчитывается CAST (plandate / 100 AS INT)
Я пытался сделать это так
SELECT trim(a.f1)||chr(44)||trim(b.f2)||chr(44)||trim(f3)||chr(44)
||trim(f4)||chr(44)||CAST( plandate/100 AS INT)||chr(44)
||trim(f5)||chr(44)||trim(f6)||chr(44)||sum(true_dem)
as "f1, f2, f3, f4, YYYYMM, f5, f6, MONTHLY_DEMAND"
from t1 a
join t2 b on a.f1 = b.f1
WHERE PLANDATE > 20180400
group by a.f1, f2, f3, f4, f5, f6, (CAST( plandate/100 AS INT))
но, очевидно, это неправильно, поскольку я получаю [SQL0122] столбец PLANDATE или выражение в списке SELECT недопустимым. ошибка. в значительной степени просто говорю, что это не хорошо. Я действительно хотел бы сохранить этот псевдоним, если это возможно, чтобы я мог экспортировать его в CSV с заголовками столбцов
игнорировать вещи fx и tx, я просто хотел отрубить любые намеки на базу данных компании. Если это имеет значение, я запускаю это на DB2 серии I через qsh