Может просто мысли вслух, но тем не менее улыбнуло такое вот самокопание:-)

Сходу на полуторке не получилось, на двойке не проверял :-(

Чудес не ожидал, но хотелось, чтоб получилось.
1) Запрос типа такого (смысл - подмена диапазонов значений одного поля и суммирование других полей таблицы с группировкой по подмененному значению)

SELECT
CASE
WHEN (r.RDB$RELATION_ID <100 ) THEN 0
ELSE 1
END ID,
SUM(r.RDB$FIELD_ID)
FROM RDB$RELATIONS r
GROUP BY ID

вообще ошибку дал - неверное поле ID (ага, значит нельзя так... А почему, собственно?)

2) В варианте с
GROUP BY r.RDB$RELATION_ID
вернул кучу записей вместо ожидаемых двух (ведь ID после CASE ожидается или 0 или 1). Ну, тут я, наверное, подсознательно понимаю, почему.

3) Однако, третья попытка модификации запроса удалась: стоило написать
GROUP BY 1
и все встало на свои места - две записи в результате (с ID=0 и ID=1)

Раскройте глаза, пжалста, почему оно именно ТАК? Понедельник - день тяжелый, не догоняю, почему мне не пришло в голову написать запрос сразу как в варианте три и почему первый вариант меня послал лесом?... :-)

--
Regards,
Ovchinnikov Vasily
ova at tkvc ru

Ответить