Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zapętlanie zestawu rekordów w SQL Server

Powinieneś być w stanie to zrobić w kilku instrukcjach bez użycia kursora lub innego kodu proceduralnego. Tylko upewnij się, że to wszystko w jednej transakcji:

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

Oczywiście dodaj odpowiednią obsługę błędów i najpierw przetestuj to.

Ponadto nieznacznie zmieniłem niektóre nazwy tabel i kolumn. Nie chcę wchodzić w to, które konkretnie konwencje nazewnictwa są lepsze od innych, ale przynajmniej co najmniej być konsekwentnym. Jeśli zamierzasz używać podkreśleń, użyj ich. Jeśli zamierzasz zamiast tego użyć notacji wielbłąda, użyj jej, ale nie mieszaj ich. To samo dotyczy nazw tabel w liczbie mnogiej i pojedynczej.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tworzenie WIELOKROTNYCH agregacji podgrup

  2. Parametr wyjściowy serwera PHP SQL

  3. Instalacja SQL Server 2017

  4. Wewnętrzne elementy SQL Server:Plan Caching Pt. I – Ponowne wykorzystanie planów

  5. Dlaczego T-SQL ISNULL() obcina ciąg, a COALESCE nie?