2012-09-27 30 views
1

我正在尝试做一个查询,它在一列中计算prorata,完整和随机结果的数量,并将它们显示在3个分开的列中。你可以给每个case语句一个列别名吗? SQL,pl/sql

到目前为止,我想:

SELECT ot.ort_method, 
CASE ot.ort_method 
    WHEN 'PRORATE' THEN '1' AS 'Pro_Rata' 
    WHEN 'COMPLETE' THEN '2' AS 'Complete' 
    WHEN 'RANDOM' THEN '3' AS 'Random' 
END 
FROM orders o, order_tranches ot 
WHERE o.ord_deal_code = 'EM0004357P'; 

不工作。有人知道该怎么做吗?

回答

2

的样本数据:

with t1 as(
    select 'EM0004357P' ord_deal_code, 'PRORATE' ort_method from dual union all 
    select 'EM0004357P' ord_deal_code, 'COMPLETE' ort_method from dual union all 
    select 'EM0004357P' ord_deal_code, 'PRORATE' ort_method from dual union all 
    select 'EM0004357P' ord_deal_code, 'RANDOM' ort_method from dual union all 
    select 'EM0004357P' ord_deal_code, 'RANDOM' ort_method from dual 
) 

查询:

SELECT count(decode(o.ort_method, 'PRORATE', 1)) as prorate 
    , count(decode(o.ort_method, 'COMPLETE', 1)) as complete 
    , count(decode(o.ort_method, 'RANDOM', 1)) as random 
FROM t1 o 
WHERE o.ord_deal_code = 'EM0004357P'; 

结果:

Prorate complete random 
    2   1  2 
+0

这工作完美。谢谢! – Mac