CustDetails
というテーブルを持つCustomer
というデータベースがあります。表のデータは以下のようになります(簡潔にするために一部を削除しました)。 ID
がPKです。SQL Serverテーブルから同じテーブルにデータをコピー
CustDetails:私はテーブルを持っている同じサーバー上Claim
と呼ばれる別のデータベースを、持っている
ID CustNo Year StatusId
--------------------------
1 1231 2015 1
2 1232 2015 2
3 1233 2015 2
4 1234 2014 1
5 1235 2014 2
呼ばClaimDetails
(表が同じDBが、していない理由を私に聞かないでください私はボード上で来て、私は変更することができますものではありません前に、設計上の決定がなされました。)
データは以下と同様です(再度の一部を簡潔にするため削除)
ClaimDetailsは:
ID ClaimNumber CustNo
----------------------
1 1 1231
2 2 1232
3 3 1236
4 4 1237
私は達成するために、いくつかのものを持っている:2016
CustDetails
から
- コピーすべての行をし、変更した場合の結果でステータスパート1は2で、2016の場合は1に設定します
CustNo
のネガティブリストを作成してClaimDetails
テーブルにありますが、には含まれていません表 - 2016年
にこれらのためにCustDetails
テーブルに新しい行を作成し、3にステータスを設定し、年間だから私は最終的な結果上記したデータのために私が達成したいです:
CustDetails:
ID CustNo Year StatusId
--------------------------
1 1231 2015 1
2 1232 2015 2
3 1233 2015 2
4 1234 2014 1
5 1235 2014 2
6 1231 2016 1
7 1232 2016 1
8 1233 2016 1
9 1236 2016 3
10 1237 2016 3
これまでのところ、私はこのクエリを持っている:
insert into CustDetails (CustNo, Year, StatusId)
select
CustNo, 2016, StatusId
from
CustDetails
where
Year = 2015
これは私が上記のクエリでパート2のための場所でのロジックを持っていないと私はちょうど行うことができると思いパート1をカバー:
再びUPDATE CustDetails
SET StatusId = 1
WHERE Year = 2016 AND StatusId = 2
私はクエリが一部3のために行われていません
SELECT CustNo
FROM ClaimDetails
WHERE CustNo NOT IN (SELECT CustNo FROM CustDetails)
そして個々CUSTNOのIDに作成するのです:私は私のような何かを行うことによってCustDetails
でClaimDetails
ではなくであるCustNo
年代を得ることができます考えています。
質問は、これを行うための最良の方法ですか、最初に一時テーブルへのコピーのようなことをする必要がありますか?そして、2つの別々のDBであっても、3番目の部分のクエリは正常に動作しますか?DBが正常に動作するかどうかを確認する限り、同じサーバーにあるかどうかはわかります。
@parfait - 私はこのことについて私の質問で言いましたが、それは私が変更を支配していない –