我正在尝试找到正确的Oracle格式掩码,以某种方式在报表的Apex页面上显示数字。 大多数情况下这些数字是整数,但有时这些数字可以是浮点数。 假设我有以下三个问题:
查询1
SELECT TO_CHAR(1, '<Format Mask>', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
查询2
SELECT TO_CHAR(0.1, '<Format Mask>', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
查询3
SELECT TO_CHAR(0.01, '<Format Mask>', 'NLS_NUMERIC_CHARACTERS = '',.''') FROM DUAL;
现在我想使用一个单一格式的掩码,它会给我以下结果:
结果1
1
结果2
0,1
结果3
0,01
任何人都可以为我提供正确的格式掩码来实现这一目标吗? 我尝试过像 FM990D999 这样的格式模板,但它在查询1中留下了逗号跟踪1的逗号。
答案 0 :(得分:0)
有一些方法可以在查询中更改列值,同时仍保留报告中的(某些)功能。但是,如果有多个这样的列和多个报告,您可能会发现存在大量开销以获得少量收益
请看OTN论坛上的这篇文章:order by date in IR
问题大致相同:列中的数据代表日期,但实际上不是日期。这篇文章包含在apex中使用的解决方案&lt; 4.2。
从4.2开始,你有一个更好的选项叫做HTML表达式
再次,从OTN链接:Re: Report formatting/sorting issue
引自链接帖子,用户fac586
在查询中包括方差和abs(方差):
SELECT region, estimate, actual, (estimate - actual) AS variance, ABS(estimate - actual) AS abs_variance, (CASE WHEN (estimate - actual)>=0 THEN 'green' WHEN (estimate - actual)<0 THEN 'red' ELSE NULL END) AS variance_color from expenses
“方差”列的HTML表达式为:
<span style="color: #VARIANCE_COLOR#; font-weight: bold;">#ABS_VARIANCE#</span>
隐藏
#VARIANCE_COLOR#
和#ABS_VARIANCE#
列。
#ABS_VARIANCE#
是列中显示的值,但排序是 使用原始方差值在基础SQL中执行。
这很像Alex建议但是更多的工作:在源代码中格式化,添加一个html表达式,隐藏另一列。
我想这取决于你想要开多远。为什么不通过其属性将格式应用于列?
另请注意,可以在这些字段中使用字符串替换语法。您可以使用包含格式掩码的几个应用程序项,然后在格式掩码字段中引用正确的掩码。
例如:
应用项AI_FORMAT_MASK1
的值为FM9990D00
在格式掩码字段中,您可以使用&AI_FORMAT_MASK1.