У меня есть SQL заявление:Informix SQL Help: Результат логического выражения не логического типа
UPDATE informix.dv_billing dv
SET dv.fee = CASE WHEN ((SELECT dc.mm_discount
FROM dv_mm_disc dc
WHERE dc.year = YEAR(dv.tdate)
AND dc.quarter = quarter(dv.tdate)
AND dc.bid=dv.bid
AND dc.mm_code=dv.pcode
AND dc.ins=dv.ins) = 0)
THEN dv.fee ELSE 0
END
WHERE MDY(MONTH('2012-04-05'), 1, YEAR('2012-04-05')) - 2 UNITS MONTH
AND last_day(DATE('2012-04-05'))
;
SQL, возвращает ошибку:
Result of a boolean expression is not of boolean type.
Что может быть не так?
Вы правы. Я забыл поставить компаратор для выражения. Запроса стали: ОБНОВЛЕНИЕ informix.dv_billing DV SET dv.fee = случай, когда ((SELECT dc.mm_discount ОТ dv_mm_disc DC ГДЕ dc.year = ГОД (dv.tradedate) И dc.quarter = четверть (dv.tradedate) И dc.boardid = dv.boardid И dc.mm_code = dv.participantcode И dc.instrument = dv.instrid) = 0) THEN dv.fee ELSE 0 END WHERE dv.tradedate МЕЖДУ МЕДИ (МЕСЯЦ ('2012-04 -05 '), 1, YEAR (' 2012-04-05 ')) - 2 ЕДИНИЦА МЕСЯЦА И last_day (DATE (' 2012-04-05 ')) GO –
МЕЖДУ И условие имеет намного больше смысла! –