使用Oracle APEX v5.1.2。
不确定如何解决以下问题,但我有一个名为 flag_defs 的表格,其中包含以下示例数据:
ID NAME
------- ------
1 A
2 B
3 C
4 D
5 E
6 F
根据上表,我需要用报告区域显示所有这些名称,但不是在单独的行上,而是以下列方式:
A B C D
E F
我只在其中显示4个名字。
现在基于以下二进制约定,请说明以下内容:
010010
其中前0行直至ID = 1且该序列中的最后0行最多为ID = 6
基于这个二进制序列,它将存储在另一个表的数据库字段中,我需要应用一个名为" flag-red"的类。我将其定义为color:red; font-weight:bold;到ID位置设置为" 1"。
的名称所以在上面的示例二进制序列中," B"和" E"只会收到" flag-red"并且在报告区域内将为红色/粗体。其他人不会。
如果数字" 1"删除课程也是如此。重置回" 0"该ID。
我需要遍历此字段中的每个数字,以在报告中设置正确的类。
我假设我首先创建一个报告并为每个名称分配一个span类,但不确定这是否是正确的方法。
此外,JavaScript是更好的选择还是坚持SQL
对如何解决上述问题表示感谢。
答案 0 :(得分:0)
我建议您按以下方式进行报告:
假设您有一个查询,该查询返回一些rownum
列的行。在此查询中添加一个数据透视表,我们可以将其转换为以下内容:
select *
from (select r, mod(rownum, 6) group_no, floor((rownum - 1)/6) row_id
from (select rownum r
from dual connect by level <= 30) t)
pivot(max(r) for group_no in (1, 2, 3, 4, 5, 0))
order by 1
现在我们可以将这个查询与存储二进制掩码的表连接起来。假设初始查询包含带有数据的列C1
,C2
,... C6
,带有掩码数据的连接表包含列M1
,M2
,. .. M6
。 (如果它是带有掩码的一列,我们可以使用计算表达式生成6列)您可以在这些列中计算CSS类的名称,例如
select ...
case when <expression1> then 'flag-red' else 'flad-green' end M1,
...
下一步是转到报告属性,在列列表中选择列C1
,转到Column formatting
部分,将#M1#
放入CSS Classes field
:
另外,将M1
,M2
,... M6
列标记为隐藏。