Результат запроса не сортируется по полю, полученному с Case

Модераторы: kdv, CyberMax

Ответить
ssvnec
Сообщения: 15
Зарегистрирован: 17 июл 2007, 00:20

Результат запроса не сортируется по полю, полученному с Case

Сообщение ssvnec » 11 мар 2012, 20:53

Помогите, пожалуйста, с проблемой. Стояла задача отсортировать результат запроса по текстовому полю, но не по алфавиту. А именно - сначала 'C', затем 'H', затем 'G', 'D','K','O'.

Я попробовал заменить одно из существующих полей таблицы с помощью Case на 1, 2, 3, 4, 5, 6 в зависимости от стоящей в соседнем поле буквы.
Это получилось, но Firebird не сортирует полученную в результате запроса таблицу по этому полю. Не могу понять почему.

Текст запроса:

select
CU.COUNTERUNITS_ID,
CU.OT,
CU.KV_NUM,
case
when CU.TIP CONTAINING 'C' then 1
when CU.TIP CONTAINING 'H' then 2
when CU.TIP CONTAINING 'G' then 3
when CU.TIP CONTAINING 'D' then 4
when CU.TIP CONTAINING 'K' then 5
when CU.TIP CONTAINING 'O' then 6 end STOAK,
CU.OPISANIE,
CU.NACH,
CU.TIP,
CU.NACHATUCHET,
CU.OKONCHENUCHET,
CU.NOMER,
CU.RAZRAD,
CU.FSTPOVERKA,
CU.SROKPOVERKI,
AP.APART_NOM,
AP.NOMERLS_BU,
AP.KV_NAME,
AP.BUILD_ID,
BU.ADRES,
CI.ALLCOUNTERIZ_ID,
CI.OT,
CI.CUNIT,
CI.RASHOD,
CI.BEG_DATA,
CI.END_DATA,
CI.INCLUDE_D,
CI.DATA_CLOSE,
CI.OPT,
CI.CLOSED
from counterunits cu join
apartments ap on cu.KV_NUM=ap.APART_NOM join
buildings bu on ap.BUILD_ID=bu.BUILD_ID left join
allcouneriz ci on ci.CUNIT=cu.COUNTERUNITS_ID

order by ap.BUILD_ID,ap.NOMERLS_BU,cu.COUNTERUNITS_ID,STOAK,ci.CUNIT,ci.END_DATA

Ответить