レコードの新規作成時に特定のカテゴリ毎に採番を行いたい場合があると思います。
そんなときはGROUP BYとMAX関数をつかって現在割り当てられている採番の最大値を取得することができます。
SELECT Category__c, Max(CategoryNo__c) FROM CategoryInfo__c GROUP BY Category__c
ApexトリガのBefore Insertで採番の最大値を取得して+1していけばカテゴリごとの採番を自動化することも可能です。
注意点としてデータローダの一括処理などでBulk APIの並列実行を行った場合、最新の採番が取得できない可能性が考えられます。こういった採番処理を行う場合、並列処理は行わないようにしたほうが良さそうです。
GROUP BYクエリについての詳細はこちらです。
サンプルコード
Apex Trigger & Group By Queryのサンプルコードです。