1

「PROCESS」という名前のテーブルを作成する必要があります。その主キーは 2 つの列 (IdOffice、IdProcess) で構成されています。問題は、「IdProcess」に IDENTITY プロパティが含まれていて、フィールドの値に応じて 1 つずつ増加する必要があることです。 「IdOffice」は次のとおりです。

「IdOffice」が同じ場合、「IdProcess」を1つずつ増やす必要があるため、より明確に図を入れます。

ここにリンクの説明を入力

どうすればいいですか?

ご協力いただきありがとうございます。

4

2 に答える 2

4

IDENTITY でこれを行うことはできません。別の列が必要になります。問題は、これを維持するのが非常に問題になる可能性があることです。次のようなデータがある場合:

IdOffice  IdProcess
--------- ----------
1         1
1         2
1         3
2         1 
2         2

2 番目の行を削除するとどうなりますか? IdOffice = 1 のすべての値に対して IdProcess を再計算する必要がありますか?

順序付けする列が他にあると仮定すると、この番号をクエリ時にいつでも生成することができ、テーブルの変更に伴うコストを格納してメンテナンスに対処する必要がなくなります。

SELECT IdOffice, IdProcess = ROW_NUMBER() OVER 
  (PARTITION BY IdOffice ORDER BY DateCreated)
 FROM  dbo.YourTable
 ORDER BY IdOffice, IdProcess;
于 2012-05-01T21:39:37.307 に答える
0

また、ID であるこのテーブルの主キーを用意することをお勧めします。次に、IdOffice と IdProcess を行のデータとして扱います。これを行うと、クエリ時に IdProcess を計算するというアーロンの提案がより理にかなっています。

于 2012-05-01T21:45:41.200 に答える