2012-06-01 3 views
0

Я хочу сделать индивидуальный заказ: IN, OUT, FINISHED.
Если я оставил дело, я получаю в FINISHED, IN, OUT. Я нашел это решение, но оно не работает для меня - я получаю ошибку.Индивидуальный заказ после отчетных заявлений

select distinct 'IN' as STATUS, 
(select count(*) ...) 
from table 

UNION ALL 

select distinct 'OUT', 
(select count(*) ...) 
from table 

UNION ALL 

select distinct 'FINISHED', 
(select count(*) ...) 
from table 

order by 
case STATUS 
    when 'IN' then 1 
    when 'OUT' then 2 
    when 'FINISHED' then 3 
end 
+0

Вы должны написать сообщение об ошибке с таким вопросом. –

ответ

1

Запрос, который вы предоставили, имеет некоторые неравномерности синтаксиса. Я думаю, что следующее решение вашей проблемы:

select * 
from ((select distinct 'IN' as statusA, (select count(*) ... 
     from table 
    ) 
     union all 
     (select distinct 'OUT', (select count(*) ...) 
     from table 
    ) 
     union all 
     (select distinct 'FINISHED', (select count(*) ...) 
     from table 
    ) 
    ) t 
order by status, 
     (case STATUSA when 'IN' then 1 
        when 'OUT' then 2 
        when 'FINISHED' then 3 
     end) 

Ваша первоначальная проблема может иметь несколько причин. В первом подзапросе вам не хватало «IN». Вам не хватает запятой после статуса в порядке. И некоторые базы данных применяют окончательный порядок в серии союзов только к последнему запросу (хотя я думаю, что DB2 делает это правильно).

Смежные вопросы