別レコードと比較条件文
下記のテーブルがあります。
・番号1から始まり番号が2に採番されると、履歴番号に番号1が入ります。
・履歴番号はひとつ前の番号を持ちます。
・Aテーブルのレコード数は100以上あります。
Aテーブル
ID 番号 履歴番号
A 1 NULL
A 2 1
A 3 2
B 1 NULL
B 2 1
B 3 2
結果として出力させたいのは、変更回数です。
・履歴番号は実際のデータですと10桁の複雑な文字列です。
ほしい出力結果
ID 番号 履歴番号 変更回数
A 1 NULL 0
A 2 1 1
A 3 2 2
B 1 NULL 0
B 2 1 1
B 3 2 2
行いたい条件式とは、
一行目:履歴番号がNULLのときは変更回数0とする。
二行目:履歴番号が他レコードの番号と一致する場合、1を持つ。そのレコードの履歴回数がNULLなら判定終わり。
三行目:履歴番号が他レコードの番号と一致する場合、1を持つ。そのレコードの履歴番号が更に他レコードと一致する場合、2を持つ。そのレコードの履歴回数がNULLなら判定終わり。
このようにして変更回数を設定したいのですが、思いつきませんのでご教示お願いできますでしょうか。
試してみたのは、DECODE(履歴番号,'','0',番号,1)
とまでためしに作りましたが、同じレコード同士の比較になってしまうため、比較できません。
別レコードと比較条件文
下記のテーブルがあります。
・番号1から始まり番号が2に採番されると、履歴番号に番号1が入ります。
・履歴番号はひとつ前の番号を持ちます。
・Aテーブルのレコード数は100以上あります。
Aテーブル
ID 番号 履歴番号
A 1 NULL
A 2 1
A 3 2
B 1 NULL
B 2 1
B 3 2
結果として出力させたいのは、変更回数です。
・履歴番号は実際のデータですと10桁の複雑な文字列です。
ほしい出力結果
ID 番号 履歴番号 変更回数
A 1 NULL 0
A 2 1 1
A 3 2 2
B 1 NULL 0
B 2 1 1
B 3 2 2
行いたい条件式とは、
一行目:履歴番号がNULLのときは変更回数0とする。
二行目:履歴番号が他レコードの番号と一致する場合、1を持つ。そのレコードの履歴回数がNULLなら判定終わり。
三行目:履歴番号が他レコードの番号と一致する場合、1を持つ。そのレコードの履歴番号が更に他レコードと一致する場合、2を持つ。そのレコードの履歴回数がNULLなら判定終わり。
このようにして変更回数を設定したいのですが、思いつきませんのでご教示お願いできますでしょうか。
試してみたのは、DECODE(履歴番号,'','0',番号,1)
とまでためしに作りましたが、同じレコード同士の比較になってしまうため、比較できません。
ACCESSのSQL文
いつもお世話になります。
SQL文でテーブルのデータを抽出したいのですが上手くいきません。
Dim rs4 As ADODB.Recordset
Dim cmdrs4 As New ADODB.Command
Set cmdrs4.ActiveConnection = CurrentProject.Connection
a = "SELECT 管理NO" & " FROM マスタ"
If strFlter = "" Then
a = a & ";"
Else
a = a & " WHERE " & strFlter & ";"
End If
cmdrs4.CommandText = a
Set rs4 = cmdrs4.Execute()
MsgBox rs4.GetString
aの内容は
a = "SELECT 管理NO FROM マスタ WHERE 管理NO Like ""*2*"";"
実行すると、rs4.GetString文で下記エラーが出ます。
「BOFとEOFのいづれかがTrueになっているか、または現在のレコードが削除されています。
要求された操作には、現在のレコードが必要です。」
aを "SELECT 管理NO FROM マスタ WHERE 管理NO = ""2-6"";"
なら問題ありません。
Likeの使い方が悪いのでしょうか?
よろしくお願いします。