堆积列Flash图表计算所有值

时间:2013-05-03 15:43:51

标签: oracle charts report oracle-apex

我在查询中构建堆积列闪存图表。我想在不同位置的列中拆分值。为了论证,我在位置41中有5个ID,在位置21中有3个ID,在位置1中有8个ID

select 
''  link,
To_Char(ENQUIRED_DATE,'MON-YY') label, 
count(decode(location_id,41,id,0)) "location1",
count(decode(location_id,21,id,0)) "location2",
count(decode(location_id,1,id,0)) "location3"
from  "my_table"
where 
some_conditions = 'Y';

作为此查询的结果,Apex创建了具有三个独立部分的堆叠列(hurray!),但是它不是具有值5,3和8,而是返回三个区域16,16,16。 (16 = 5 + 3 + 8)。 显然,Apex正在经历所有解码条件并添加所有值。 我正在努力实现这方面的描述 article

1 个答案:

答案 0 :(得分:1)

Apex似乎没有做任何时髦的事情,你可以通过SQL * Plus获得与查询相同的结果。当你这样做时:

count(decode(location_id,41,id,0)) "location1",

..然后计数每行都会增加 - 包含哪一列并不重要,零只被视为任何固定值。我认为您打算使用sum

sum(decode(location_id,41,1,0)) "location1",

这里为每一行分配零或一,并对它们求和,得到一个得到一个的数字,即具有指定id值的数字。

我个人通常使用case而不是decode,但结果是一样的:

sum(case when location_id = 41 then 1 else 0 end) "location1",