0

私はこのサイトを初めて利用しています。データベースの大規模な更新を実行するには本当に固執しています。私は、更新が必要なトランザクションのリストを提供していました。ここには、データベースの小さな例があり、最終的に望ましい出力があります。 enter image description here一括データ更新SQL Server

質問があります。購入IDがPurchaseTypeID = 2を指しているトランザクションのリストがあり、すべてのトランザクションがPruchaseTypeIDが5のpurchaseIDを指し示すようにします。

+0

尋ねると、より高速なヘルプを表示する方法についてここを見て、いくつかのDDL、DMLを追加してくださいます。https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question- on-a-public-forum/ – TheGameiswar

+0

申し訳ありません。ここでは、より良いスクリーンショットです。 @TheGameiswar –

+0

私はペーストしたリンクを読んでください。良い質問には、それがとても基本的ですが、特典があります。 – TheGameiswar

答えて

0

あなたが探しているロジックに詳細を追加する必要があります。私はあなたが顧客に基づいて関連を試みていると信じています。

EDIT:更新文を追加し、一時表ではなくcteを使用しました。

Create Table #Purchases (ID Int, CustomerID Int, PurchaseTypeID Int) 
Insert #Purchases Values (1987, 1, 209) 
Insert #Purchases Values (32875, 1, 2) 
Insert #Purchases Values (628900, 3, 220) 
Insert #Purchases Values (449000, 3, 30) 
Insert #Purchases Values (4560, 3, 209) 
Insert #Purchases Values (8008, 3, 2) 
Insert #Purchases Values (9856, 3, 5) 
Insert #Purchases Values (6000, 1, 5) 

Create Table #Transactions (TransactionID Int, PurchaseID Int, PurchaseIDForwardTo Int) 
Insert #Transactions Values (1, 1987, 32875) 
Insert #Transactions Values (2, 628900, 8008) 
Insert #Transactions Values (3, 449000, 8008) 
Insert #Transactions Values (4, 4560, 8008) 

Select * From #Purchases 
Select * From #Transactions 

;With ctePurchasesTransactions As 
(
Select * 
    From #Purchases P 
    Join #Transactions T On T.PurchaseID = P.ID 
) 
Update T Set T.PurchaseIDForwardTo = P.ID 
    From #Transactions T 
    Join ctePurchasesTransactions PT On PT.TransactionID = T.TransactionID 
    Join #Purchases P On P.CustomerID = PT.CustomerID And P.PurchaseTypeID = 5 

Select * From #Transactions 
+0

はい、あなたは正しいです。すべての取引には、customerIDに属するpurchaseIDソースと購入ID宛先があります。すべての購入にはpurchaseTypeIDが添付されています。 Transaction.PuurchaseIDforwatdedtoを更新するにはどうすればよいですか? @joe C –

+0

私は自分の答えを更新ステートメントで更新しました。 –

関連する問題