आपको कर्सर या अन्य प्रक्रियात्मक कोड के उपयोग के बिना कुछ कथनों में ऐसा करने में सक्षम होना चाहिए। बस सुनिश्चित करें कि यह सब एक ही लेन-देन में हो:
BEGIN TRANSACTION
INSERT INTO crrsql.dbo.AR_Transactions (
cashier_id,
cust_num,
balance,
transaction_date)
SELECT
100199,
cust_num,
-acct_balance,
DATEADD(MINUTE, -30, current_date)
FROM crrsql.dbo.Customers
WHERE acct_balance <> 0
UPDATE crrsql.dbo.Customers SET acct_balance = 0 WHERE acct_balance <> 0
COMMIT TRANSACTION
बेशक, उचित त्रुटि प्रबंधन जोड़ें और पहले इसका परीक्षण करना सुनिश्चित करें।
साथ ही, मैंने आपकी कुछ टेबल और कॉलम नामों में थोड़ा बदलाव किया है। मैं यह नहीं जानना चाहता कि कौन सी विशिष्ट नामकरण परंपराएं दूसरों की तुलना में बेहतर हैं, लेकिन कम से कम कम से कम स्तिर रहो। यदि आप अंडरस्कोर का उपयोग करने जा रहे हैं, तो उनका उपयोग करें। यदि आप इसके बजाय ऊंट-बैक नोटेशन का उपयोग करने जा रहे हैं तो उसका उपयोग करें, लेकिन उन्हें मिलाएं नहीं। वही बहुवचन बनाम एकवचन तालिका नामों के लिए जाता है।