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

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

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

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

Q&A

解決済

1回答

263閲覧

SQL SERVERで採番したいです

s2s

総合スコア1

SQL Server

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

0グッド

0クリップ

投稿2024/04/15 12:30

編集2024/04/16 01:23

1.実現したいこと: SQLでRN列の採番をしたいです。(row_numberの使い方を教えてください)

 下表のSQLテーブルのイメージは、SQL SERVERのテーブルからSELECTしたものです。
ここからRN列を導きたいが下記の条件があります。
1)RN列は、SBL列のa,bレコードのグループが変わった場合は、1から始まります。
2)SSI列は、LN列とLN2列の組み合わせになり、RN列は、LN列、LN2列の組み合が変わった場合にインクリメントされます。
3)RN列は、LN2列を考慮しない場合は、インクリメントされずにRN_NG列となります。

2.テーブルのイメージ…SQL SERVER(2017スタンダード)から得たいのは、下表のRN列です。

| DATE | PART | SBL | SSI | SSI_REC_NO1 | SSI_REC_NO2 | LN | LN2 | RN | RN_NG |
| 20240101 | P1 | a | S1 | 1 | 1 | L1 | L1 | 1 | 1 |
| 20240101 | P1 | a | S1 | 1 | 2 | L1 | L1 | 2 | 2 |
| 20240101 | P1 | a | S2 | 2 | 1 | L1 | L1 | 1 | 1 |
| 20240101 | P1 | a | S2 | 2 | 2 | L1 | L1 | 2 | 2 |
| 20240101 | P1 | a | S3 | 3 | 1 | L1 | L2 | 3 | 3 |
| 20240101 | P1 | a | S3 | 3 | 2 | L1 | L2 | 4 | 4 |
| 20240101 | P1 | a | S4 | 4 | 1 | L2 | L2 | 5 | 3 |
| 20240101 | P1 | a | S4 | 4 | 2 | L2 | L2 | 6 | 4 |
| 20240101 | P1 | a | S5 | 5 | 1 | L2 | L2 | 5 | 3 |
| 20240101 | P1 | a | S5 | 5 | 2 | L2 | L2 | 6 | 4 |
| 20240101 | P1 | a | S6 | 6 | 1 | L2 | L2 | 5 | 3 |
| 20240101 | P1 | a | S6 | 6 | 2 | L2 | L2 | 6 | 4 |
| 20240101 | P1 | b | S7 | 1 | 1 | L3 | L3 | 1 | 1 |
| 20240101 | P1 | b | S7 | 1 | 2 | L3 | L3 | 2 | 2 |
| 20240101 | P1 | b | S8 | 2 | 1 | L3 | L3 | 1 | 1 |
| 20240101 | P1 | b | S8 | 2 | 2 | L3 | L3 | 2 | 2 |
| 20240101 | P1 | b | S9 | 3 | 1 | L3 | L4 | 3 | 3 |
| 20240101 | P1 | b | S9 | 3 | 2 | L3 | L4 | 4 | 4 |
| 20240101 | P1 | b | S10 | 4 | 1 | L4 | L4 | 5 | 3 |
| 20240101 | P1 | b | S10 | 4 | 2 | L4 | L4 | 6 | 4 |
| 20240101 | P1 | b | S11 | 5 | 1 | L4 | L5 | 7 | 5 |
| 20240101 | P1 | b | S11 | 5 | 2 | L4 | L5 | 8 | 6 |
| 20240101 | P1 | b | S12 | 6 | 1 | L6 | L6 | 9 | 7 |
| 20240101 | P1 | b | S12 | 6 | 2 | L6 | L6 | 10 | 8 |
| 20240101 | P1 | b | S13 | 7 | 1 | L6 | L6 | 11 | 7 |
| 20240101 | P1 | b | S13 | 7 | 2 | L6 | L6 | 12 | 8 |
| 20240101 | P1 | b | S14 | 8 | 1 | L6 | L6 | 11 | 7 |
| 20240101 | P1 | b | S14 | 8 | 2 | L6 | L6 | 12 | 8 |

3.ツール:Vb.net,SQL Server2017スタンダードを用いております。

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

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

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

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

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

odataiki

2024/04/15 23:36

質問文の中に「▲▲」等テンプレートが残っていて 質問文としてまだ完成していないように受け取れます。 回答する側としてはできるだけ正しい、役に立つ回答をしたいので 質問文が完成するのを待ってから回答しようと考えます。
s2s

2024/04/16 01:15

もうしわけありません。 ありがとうございます。 これから確認します。
s2s

2024/04/16 02:17

コメントありがとうございます。質問を修正したのでご確認よろしくお願いいたします。
odataiki

2024/04/16 04:07

MarkDownのテーブル表示になるように  | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | をカラムヘッダとデータ行の間に入れてもらうと 読みやすいテーブル表示になります。 | DATE | PART | SBL | SSI | SSI_REC_NO1 | SSI_REC_NO2 | LN | LN2 | RN | RN_NG | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | 20240101 | P1 | a | S1 | 1 | 1 | L1 | L1 | 1 | 1 |
odataiki

2024/04/16 04:10

> 2) … RN列は、LN列、LN2列の組み合が変わった場合にインクリメントされます。 データ行の1行目と2行目 LNとLN2の組み合わせに変化ないのにRN列インクリメントされています。 条件文に記述間違いはないでしょうか?
sazi

2024/04/16 04:34

> 2)SSI列は、LN列とLN2列の組み合わせになり、RN列は、LN列、LN2列の組み合が変わった場合にインクリメントされます。 > 3)RN列は、LN2列を考慮しない場合は、インクリメントされずにRN_NG列となります。 上記を具体的に例示しているデータはどの行ですか?
sazi

2024/04/16 07:15 編集

データの前後で判断するようですが、データは何順で参照するのですか? 1で始まる条件は、partition by で制御できますが、その上で何順での連番とするのでしょうか? 別な言い方をすると、「どのようなグループに対して、どのような順序での連番なのか」です。 尚、同順があるので、rank()を使用する事になると思われます。
sk.exe

2024/04/16 06:39

> SQL SERVERのテーブルからSELECTしたものです。 その具体的な SQL 文も明記されることをお奨めします。
s2s

2024/04/16 13:39 編集

皆様、ご指摘~ご提案ありがとうございました。(ヒントを頂き解決しました。) この問題に気づいてから数日間悩みました。 投稿してからご指摘や提案RANKを用いる…とのことから気づきもあり DENSE_RANKを用いてSBI列でグルーピング、LN列昇順、LN2列昇順でソートしたところ 意図した数列を得ることができました。情報提供を頂きながら、誠に申し訳ありません。 社内ユーザ案件でこれ以上は、実データをマスキングし開示することが難しいため、お許しください
guest

回答1

0

自己解決

皆様、ありがとうございました。
この問題に気づいてから数日間悩みました。 投稿してからご指摘や提案RANKを用いる…とのことから気づきもあり DENSE_RANKを用いてSBI列でグルーピング、LN列昇順、LN2列昇順でソートしたところ 意図した数列を得ることができました。情報提供を頂きながら、誠に申し訳ありません。 社内ユーザ案件でこれ以上は、実データをマスキングし開示することが難しいため、お許しください

投稿2024/04/16 13:51

編集2024/04/16 13:53
s2s

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問