【ACCESS】ACCESSのクエリーで連番をふる方法

当ページのリンクには広告が含まれています。
Access数字と文字列
  • URLをコピーしました!

連番といえばオートナンバーですね。

オートナンバーは非常に便利ですが、テーブルのフィールド型の1つであって

選択クエリーで選択した該当レコードにそれぞれ連番をふりたい場合には使えません。

そこで、クエリーで連番をふる方法をご紹介します。

概要

クエリーの中でDcount()関数を使います。

一意となるKEYについて、クエリー全体のレコードの中で、現在レコードのKEY以下のデータが何件あるか、で行番号を取得する方法です。

サンプルクエリー

今回はお客様からの問い合わせデータに対して連番を付与するサンプルを作成します。

例えば以下のようなデータがあるとします。

受信日付を範囲指定して取得する選択クエリー内で各行に連番を振りたいと思います。

顧客ID受信日時受付種別
2353152019/08/22 17:55:19注文
4029252019/08/22 14:40:59クレーム
4031532019/08/22 18:34:24注文
4032322019/08/22 12:04:38注文
4036302019/08/22 14:16:11注文
6100452019/08/22 15:50:27注文
7129162019/08/22 16:24:41問い合わせ
7129452019/08/22 17:47:38問い合わせ
11059932019/08/22 13:44:04注文
24072892019/08/22 17:35:46注文
26018702019/08/22 17:10:10注文
連番顧客ID受信日時受付種別
11033002019/08/22 13:20:03注文
22337082019/08/22 16:06:55注文
32353152019/08/22 17:55:19注文
44029252019/08/22 14:40:59クレーム
54031532019/08/22 18:34:24注文
64032322019/08/22 12:04:38注文
74036302019/08/22 14:16:11注文
86100452019/08/22 15:50:27注文
97129162019/08/22 16:24:41問い合わせ
107129452019/08/22 17:47:38問い合わせ
連番の式

DCount(“*”,”受付データ”,”顧客ID<=” & [顧客ID])

解説

Dcount()関数の引数は、①カウントする項目、②対象テーブル、③条件の3つです。

ここでは、①は*にしています。顧客IDでもOkです。

肝は、③の条件のところです。

条件は文字列として指定しますので、上記の指定で作成(展開)される文字列は以下の通りです。

顧客ID<=今の行の顧客ID

“顧客ID<=”の部分は文字列ですのでそのままの形。[顧客ID]の部分は展開され現在行の顧客ID番号となります。

例えば、4行目のレコードの連番は【顧客ID<=402925】つまり、受付データテーブルの中で顧客IDが402925以下のレコード数を出力することになります。

注意点

今回の顧客IDは数値型なのですが、これが文字列型だった場合は少し注意が必要です。

条件式を以下のように今の行の顧客IDをシングルクォートで囲む必要があります。

顧客ID<=’今の行の顧客ID’

このため、Dcount()の指定方法は以下のようになります。

連番の式

DCount(“*”,”受付データ”,”顧客ID<=” & “‘” & [顧客ID] & “‘”)

応用編

上記では全データに連番を採番しましたが、受付種別毎にナンバリングしたい場合もあるかと思います。

連番の式

DCount(“*”,”受付データ”,”顧客ID<=” & [顧客ID] & ” AND 受付種別 =” & “‘” & [受付種別] & “‘”)

💡 Accessしかできなかった私が年収2倍のPMになった話
キャリアを見直した実体験はこちらの記事で紹介しています

よかったらシェアしてね!
  • URLをコピーしました!

💡そのAccessスキル、もっと活かせる場所があるかも
私が年収2倍のPMになったストーリーを読む

コメント

コメントする