我想制作一个自定义订单: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正确地执行了此操作)。