想要通过单个查询在不同列中显示正值和负值

时间:2011-06-02 05:26:16

标签: sql oracle

我有一个具有负值和正值的列表,并希望通过单个查询在不同列中显示正值和负值。

Column
-10000
-17000
 16000
 25000

输出应该像

A        B     
-----------------
-10000   16000
-17000   25000

我正在使用oracle和pl sql developer。

3 个答案:

答案 0 :(得分:3)

select decode(sign(col),1,col) positive_value
      , decode(sign(col),-1,col) negative_value
      , decode(sign(col),0,col) zero_value
from tbl_name

我不知道这是否会起作用,但一旦尝试了......

答案 1 :(得分:1)

HI sara,

试试这个

SELECT T1.POSITIVE_VALUE, T2.negetive_value 
FROM (select COL positive_value, ROWNUM C1 FROM TEST_1 WHERE COL >= 0) T1 
FULL OUTER JOIN (SELECT COL negetive_value, ROWNUM C2 FROM TEST_1 WHERE COL < 0) T2
ON (T1.C1 = T2.C2);

答案 2 :(得分:0)

这可能是一个解决方案,但前提是正数和负数的数量相同。

select a.column as negative, b.column as non_negative from table a, table b where a.column<0 and b.column>=0;

当然,column是您的列名,table是您的表名。