• 締切済み

ACCESSのクエリで連番をつけたい!

過去に同じような質問がありますが、どうしてもうまくいかないので 再度質問させてください。 当方はそれほどスキルが高くないのでSQLなどはさっぱりです・・・・ 下記のような処理を行いたいのですが、 何卒宜しくお願いいたします。 ・「CUSTOMER」ごとに「SHIPMENTDATE」の昇順で「NO」に連番をつけたい ・データは数字ではなくTEXT ・全データは15万件ほど テーブル名:カウント対象受注 CUSTOMER ORDER REGULAR SHIPMENTDATE NO 00020041 000160104 0024174 2011/3/15 4 00020033 000001931 0000323 2011/2/20 2 00020009 000052835 0008807 2010/12/12 1 00020041 000160103 0024174 2011/2/15 3 00020033 000001930 0000323 2010/12/20 1 00020041 000160102 0024174 2011/1/15 2 00020033 000001932 0000323 2011/4/20 3 00020009 000052836 0008807 2011/1/12 2 00020041 000160101 0024174 2010/12/15 1 00020041 000160105 0024174 2011/4/15 5

みんなの回答

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

もう一つサブクエリを使う方法もあります。 SELECT DISTINCT カウント対象受注.CUSTOMER, カウント対象受注.ORDER, カウント対象受注.REGULAR, カウント対象受注.SHIPMENTDATE, (SELECT COUNT(*) FROM カウント対象受注 AS Temp WHERE カウント対象受注.CUSTOMER = Temp.CUSTOMER AND Temp.ORDER<=カウント対象受注.ORDER GROUP BY Temp.CUSTOMER) AS 連番 FROM カウント対象受注; #1とどちらが早いかは比べてみてください。 #1と同様に固有の値を「はい」にします。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

提示されているデータのなかで、重複がないのは ORDERという前提の下でクエリを作成しますと、 SELECT カウント対象受注.CUSTOMER, カウント対象受注.ORDER, カウント対象受注.REGULAR, カウント対象受注.SHIPMENTDATE, DCount("*","カウント対象受注","CUSTOMER = '" & [CUSTOMER] & "' AND ORDER <= '" & [ORDER] & "'") AS 連番 FROM カウント対象受注; クエリのデザインビューのテーブルを表示している ところの適当なところをポイントし、右クリックで プロパティを表示し、固有の値を「はい」にします。 クエリが長いので貼り付けるときずれるかも知れません。 修正してください。 提示されているデータのNOというフィールドは 最初からあるものなのかわからないので、上記では それに該当するフィールドとして連番としています。 クエリだけだと、いまのところこのようなところです。 ほかにもいいアイディアがあるかもしれませんが。

関連するQ&A

  • アクセスの連番について

    アクセスでテーブルのkanri_Noという項目に管理番号を振りたいと思っています。 他のテーブルに後でインサートするので、そのテーブルのKanri_NOの最大値をKanri_Maxとして引いてきてそのKanri_Max+連番という風に振りたいのですが、どうSQLを入れればいいのか分かりません。 Kanri_Maxが4000だったら、4001、4002、4003・・・、Kanri_Maxが5000だったら5001、5002、5003とKanri_Noの項目に連番を振りたいのです。 連番を振る前のKanri_Noは空白です。 初心者で申し訳ないのですが教えてください。

  • Access2010 クエリ作成 超初心者

    以下のテーブルがあります テーブル:受注no、売上日、キャンセル区分… 12345、2013/9/20、 12346、2013/9/20、 12347、2013/9/21、 12348、2013/9/25、 12346、2013/9/26、1 12348、2013/9/30、1 クエリを使用して、キャンセル区分に1が入力されていない受注noのカウントをしたいのですが、クエリ1回でカウントする方法がありましたら教え いただきたく思います 。 よろしくお願いします。

  • アクセスで条件に合うもののみに連番を振る方法は?

    下記のようにテーブル1にデータがあります。 テーブル1 ID 参加番号 級 判定 1   1   2  ◎ 2   2   1  〇 3   3   2 4   4   1  ◎ 5   5   3  ◎ 6   6   2  〇 7   7   1  8   8   3  〇 9   9   2  〇 このデータを追加クエリを使ってテーブル2に追加をします。 その時に級:昇順・参加番号:昇順で並べ替え、同時に判定が〇・◎のものに級別に証書番号として連番を振りたいと考えています。 テーブル2 ID 参加番号 級 判定 証書番号 1   2   1  〇   1 2   4   1  ◎   2 3   7   1  4   1   2  ◎   1 7   3   2 5   6   2  〇   2 6   9   2  〇   3 8   5   3  ◎   1 9   8   3  〇   2 連番を振る場合Dcountを使えばよいみたいですが、級別だけを条件とした場合は連番が振れるのですが、「判定が〇・◎のもの」という条件の付け方がわかりません。 どなたかアドバイスをお願いします。

  • 連番に紐づく小連番の最大値を除外するには…

    お世話になります。 以下のテーブルから、次のアウトプットを行うためのSQLをご教授ください。 【インプット】 大連番 小連番 … 000001 000001 … 000001 000002 … 000001 000003 … 000001 000004 … 000002 000001 … 000002 000002 … 000002 000003 … 000003 000001 … 000003 000002 … 【アウトプット】 大連番 小連番 … 000001 000001 … 000001 000002 … 000001 000003 … 000002 000001 … 000002 000002 … 000003 000001 … ※大連番毎に小連番の最大値のデータを除いている。 どうか、お力添えをお願い致します。。。

  • アクセスのクエリについて

    1.以下の二つのテーブルを作成しました。 ・テーブル1  case_no:数値型  ap_no:テキスト型  ap_date:日付型  kanriID:数値型 ・テーブル2  kanriID:数値型  F_name:テキスト型 2.上記した二つのテーブルの「KanriID」をリレーションシップして、 さらに、下記の項目をピックアップした選択クエリを作成しました。  case_no ap_no ap_date kanriID(テーブル1)  F_name 3.上記のクエリを基に、ウィザードを利用して単票フォームを作成したのですが、データの更新ができないフォームが出来上がってしまいました。  どうしたら、データの更新ができるようになるのでしょうか?

  • Access 2000、ユニオンクエリーがどうしても出来ない!

    初歩の質問ですが、ユニオンクエリーが出来ません。 やりたい事は非常に単純です↓↓ 1:テーブル1、テーブル2、テーブル3があります。 2:各テーブルのデータ内容は様々ですが、共通項目として「品番」を持っています。但しテーブル1は「製品名」、テーブル2と3は「品番」という項目名になっています。 3:各テーブル内に、品番が幾つ入っているか、集計クエリでカウントします。項目名が違うので以下のように処理しました。  <テーブル1の場合>    フィールド|品番のカウント: 製品名|タイトル: "テーブル1"    テーブル |テーブル1     集  計 |カウント  <テーブル2(或いは3)の場合>    フィールド|品番のカウント: 品番|タイトル: "テーブル2"    テーブル |テーブル2     集  計 |カウント 4:3の集計クエリーを繋ぎ、テーブル1~3の品番件数を一気に表示させたい  <ユニオンクエリの内容>     SELECT *     from Q0_カウント_テーブル1     UNION select *     from Q0_カウント_テーブル2     UNION select *     from Q0_カウント_テーブル3; 5:私の予想としてはこんな風↓↓出てくるはずだったのですが・・・     品番のカウント| タイトル     ------------------------------        30   | テーブル1        20   | テーブル2        23   | テーブル3  6:結果は「From句の間違いです」と出ます。他の質問も見ましたが、自分のSQLのどこを直せば良いのかわかりません・・・教えてください!

  • クエリで複数項目を昇順後、連番を付ける方法

    お世話になります。 表題の通り、ACCESSクエリで連番を付けるにはどうすれば宜しいでしょうか? 調べたのですが、よく分からない為、 関数又は、SQLに詳しい方、よろしくお願いいたします。 (下記もDCOUNT関数でできますか?) テーブル名:T_A --------------------------- 番号   名前   ランキング 1     佐藤    1 2     鈴木    2 3     佐藤    1 4     鈴木    2 5     佐藤    2 --------------------------- 上記のテーブルがあったとして、特産品及び、ランキングを昇順すると、 下記の通りとなります。 --------------------------- 番号   名前   ランキング 3     佐藤    1 1     佐藤    1 5     佐藤    2 4     鈴木    2 2     鈴木    2 --------------------------- ここで、連番という項目を追加して、上から1,2,3と連番を付けるにはどうすれば 宜しいでしょうか。 ↓↓↓↓↓↓↓ (得たい結果) ------------------------------. 番号   名前   ランキング 連番←追加項目 3     佐藤    1       1 1     佐藤    1       2 5     佐藤    2       3 4     鈴木    2       4 2     鈴木    2       5 ------------------------------ 分かる方、教えてください。 よろしくお願い致します。

  • Access2000のクエリ、教えてください。

    データが 名前 NO 大学 -------------------------------- 田中 8 北海道大学 すずき 1 大宮大学 田中 3 青森大学 田中 2 千葉大学 すずき 3 湘南大学 すずき 4 山梨大学 すずき 2 東京大学 で、検索条件、名前の最大NO で 名前、 NO、大学 をリストアップ したい。 ●ほしい結果 すずき 4 山梨大学 田中 8 北海道大学 ですが、 クエリーのSQLです。 --------------------------- SELECT テーブル1.名前, Max(テーブル1.[No]) AS Noの最大, Max(テーブル1.大学) AS 大学の最大 FROM テーブル1 GROUP BY テーブル1.名前; ●現在の結果 すずき 4 東京大学 田中 8 北海道大学 となってしまいます。 SQLをどのように変えればいいのでしょうか? アドバイスをお待ちしています。

  • ACCESS DSUM関数の使い方について

    よろしくお願いいたします。 環境:winXP/Access2003(Office2003) 受注データが2つのファイルに分かれています。 (1)ヘッダーテーブル:ORDER_H (2)明細テーブル:ORDER_D クエリにて2つのテーブルを結合し、同一クエリ内のフィールドで、受注NO(ORDER_NO)毎の”消費税(TAX)"と”明細小計(syo_kingaku)"の累計を計算したい状況です。 現在クエリのフィールドに、 式1:DSum([TAX],"ORDER_D","[ORDER_NO]="&"[ORDER_NO]")とセットし実行しましたら、 計算結果は、[TAX]×レコード数になってしまいます。 恐れ入りますがご教授をお願いいたします。

  • (ACCESS)連番取得について

    アクセスで顧客管理をしています。 DMax関数を用いて、レコードを追加する度に自動で連番を振る設定に したいと思っていますが、上手くいかないため質問させてください。 【テーブル名】T_顧客一覧 【入力用のフォーム名】F_顧客登録 【連番を入力させたい項目(フィールド名)】No(テーブルでは主キーに設定) とし、フォームの”No”の既定値に   =DMax("No","T_顧客一覧")+1 と入力するのですが、フォームには1としか表示されません。 非常に初歩的な質問だとは思うのですが、 何か原因として考えられることがありますでしょうか? 情報が足りないようでしたら補足させていただきます。 よろしくお願いします。

専門家に質問してみよう