Měli byste to udělat v několika příkazech bez použití kurzoru nebo jiného procedurálního kódu. Jen se ujistěte, že je to vše v jedné transakci:
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
Samozřejmě přidejte správné zpracování chyb a nezapomeňte to nejprve otestovat.
Také jsem mírně pozměnil některé názvy tabulek a sloupců. Nechci se pouštět do toho, které konkrétní konvence pojmenování jsou lepší než jiné, ale alespoň být konzistentní. Pokud budete používat podtržítka, použijte je. Pokud místo toho použijete notaci velbloudího hřbetu, použijte ji, ale nemíchejte je. Totéž platí pro názvy tabulek v množném a jednotném čísle.