Skip to content

Partition

返回一个VariantString),标记某个值落入一系列等宽数值范围中的哪一个。

语法:Partition( number , start , stop , interval )

number
必需 要针对范围评估的值。
start
必需 开始整体范围的数字。不得小于0。
stop
必需 结束整体范围的数字。不得小于或等于start
interval
必需 每个单独范围的宽度。不得小于1。

返回值标识number落入的特定范围,格式为"<lowervalue>: <uppervalue>"Partition在查询中最有用——例如按运费成本区间分组订单的SQL SELECT

下表显示了三组startstopinterval的示例范围确定方式。Before First列是Partitionnumber低于start时返回的内容;After Last列是对number高于stop时返回的内容。

startstopintervalBefore FirstFirst RangeLast RangeAfter Last
0995" :-1"" 0: 4"" 95: 99"" 100: "
2019910" : 19"" 20: 29"" 190:199"" 200: "
100101020" : 99"" 100: 119""1000:1010""1011: "

在第三行中,startstop不能被interval整除:最后一个范围扩展到stop(覆盖11个数字),即使interval为20。

如有必要,Partition在范围的每一端填充前导空格,使冒号左右两侧的字符数与stop中的字符数加一相同。这使标签在纯文本排序下保持正确顺序。

如果interval为1,范围折叠为number:number,无论startstop如何。

任何参数都可以是十进制值,但在处理前四舍五入到最接近的偶数整数。如果任何参数为NullPartition返回Null

示例

本示例在SQL SELECT中使用Partition统计运费落入每个范围的订单数量。start = 0,stop = 500,interval = 50,第一个范围为" 0: 49",依此类推到500。

sql
SELECT DISTINCTROW Partition([Freight], 0, 500, 50) AS Range,
                   Count(Orders.Freight)            AS [Count]
FROM Orders
GROUP BY Partition([Freight], 0, 500, 50);

twinBASIC及其LOGO版权为作者"韦恩"所有