Ovchinnikov Vasily wrote:

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.0.

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

По чему группировал -- столько записей он и вернул.

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

Есс-но.


--
Дмитрий Еманов

Ответить