質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

2回答

311閲覧

SQL SEVERによる自動採番

3EN1

総合スコア12

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2023/08/29 06:58

1.実現したいこと
SQL SEVERで自動採番を行いたいです。

2.質問内容
下表のA,Bを元にCのような採番を行いたいです。

A B C
1 1 1
1 2 2
1 1 1
1 2 2
1 1 1
1 2 2
2 1 3
2 2 4
2 1 3
2 2 4
2 1 3
2 2 4
3 1 5
3 2 6
3 1 5
3 2 6
3 1 5
3 2 6
4 1 7
4 2 8

3.補足情報
sql server2017 std
EXCEL365 vba

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sk.exe

2023/08/29 07:33

1. あるテーブルの全てのレコードを[A]と[B]でグループ化する/重複しない値の組み合わせを得る。 2. 上記 1 の結果を[A]の昇順、[B]の昇順に並べ替えた状態で 1 から始まる連番を返す計算列[C]を追加する。 3. 元のテーブルと上記 2 の結果を[A]と[B]をキーとして内部結合し、前者の全ての列と後者の[C]列を返す。 みたいなことをしたい、ということでしょうか。
3EN1

2023/08/29 07:55

コメントありがとうございます。 SK様の認識通りです。 VBAからSQL文を投げておりますが、キーブレイク処理でなくSQL文側でまかなえないかかんがえておりました。
guest

回答2

0

ベストアンサー

  1. あるテーブルの全てのレコードを[A]と[B]でグループ化する/重複しない値の組み合わせを得る。

  2. 上記 1 の結果を[A]の昇順、[B]の昇順に並べ替えた状態で 1 から始まる連番を返す計算列[C]を追加する。

  3. 元のテーブルと上記 2 の結果を[A]と[B]をキーとして内部結合し、前者の全ての列と後者の[C]列を返す。

上記の通りの処理を実行するなら、例えば次のようなSQL文になるかと。

SQL

1SELECT t1.*, 2 q2.[C] 3FROM [テーブル名] AS t1 4INNER JOIN (SELECT ROW_NUMBER() OVER(ORDER BY t2.[A] ASC, t2.[B] ASC) AS [C], 5 t2.[A], 6 t2.[B] 7 FROM [テーブル名] AS t2 8 GROUP BY t2.[A], t2.[B]) AS q2 9ON t1.[A] = q2.[A] AND t1.[B] = q2.[B];

DENSE_RANK 関数を使えばもっと短くて済みます。

SQL

1SELECT t1.*, 2 DENSE_RANK() OVER(ORDER BY t1.[A] ASC, t1.[B] ASC) AS [C] 3FROM [テーブル名] AS t1;

投稿2023/08/29 08:16

sk.exe

総合スコア1077

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

3EN1

2023/08/29 09:01

SK様 SQL関数のご教示頂きありがとうございます。 助かりました。
guest

0

C=(A-1)*2+B
的な処理ですかね・・・
A,Bはどうやって任意に指定するのでしょうか?

投稿2023/08/29 07:10

yambejp

総合スコア117674

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

3EN1

2023/08/29 07:15

ありがとうございます。 A,Bは、値を直接掲載できないので書き換えております。
3EN1

2023/08/29 09:06

ありがとうございました。 ご教示頂いた数式は、VBAのロジックを組むときに検討致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問