在报告中,我希望以特定格式显示数字(例如,数千,数百万,数十亿;不同的货币或单位符号),具体取决于不同列中指定的“数字类型”。 我找到了一个有效的解决方案(下图),但我想知道是否有更好的方法来实现它。
在表1中,每条记录都包含一个值和一个数字类型:
NumberType Value
---------------------------
GDP 12300000000
LiteracyRate 0.95
Population 15000000
表2包含每种数字类型的格式信息,例如货币和单位符号:
NumberType Prefix Suffix ScalingFactor
--------------------------------------------
GDP $
LiteracyRate % 100
Population
所需的输出如下所示:
NumberType DisplayValue
-------------------------------
GDP $ 12.3 Trillion
LiteracyRate 95 %
Population 15.0 Million
我的当前解决方案是创建一个SQL查询,我在其中创建一个计算字段DisplayValue。在计算字段I
中IIf([Value]>1000,round([Value]/1000,1)&" thousand",[Value])
我发现SQL语句很难阅读,我想知道是否有更优雅和高效的实现,可能使用格式化字符串。你有什么建议吗?
答案 0 :(得分:2)
如果你有另一张桌子:
Range RangeName LowValue HighValue
Low 1 999
Million Million 1000000 9999999999
Thousand Thousand 1000 99999
Trillion Trillion 10000000000 9999999999999
注意那些高价值,千万之后,我被美国数字纠缠在一起!
你可以说:
SELECT t1.NumberType,
[Prefix] & IIf(Nz([scalingfactor],0)>0,Val([value])*[scalingfactor],Val([Value]))/[lowvalue] & [suffix] & " " & [RangeName] AS DisplayValue
FROM t3, t1
INNER JOIN t2 ON t1.NumberType = t2.NumberType
WHERE (((IIf(Nz([scalingfactor],0)>0,Val([value])*[scalingfactor],Val([Value]))) Between [lowvalue] And [highvalue]));
给出结果:
NumberType DisplayValue
Population 15 Million
GDP $1.23 Trillion
LiteracyRate 95%
只要您记得重命名它们,您也可以使用报表控件做很多事情。以DlookUp为例。报告还允许您使用VBA和您自己的功能。