Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cập nhật một cột dựa trên giá trị của một cột khác

Tôi sẽ cố gắng giải thích điều này theo cách càng đơn giản càng tốt để dễ hiểu:

Giả sử, bạn có một bảng Vendor thiết lập một cái gì đó như thế này:

create table Vendor (AccountTerms int, ulARAgeing varchar(50));

Và, sau đó chúng tôi sẽ chèn một số giá trị mẫu cho cả hai cột trong Vendor bảng:

insert into Vendor values
(0,'Test'),
(1,'Test1'),
(2,'Test2');

Tiếp theo, chúng tôi sẽ viết một tuyên bố cập nhật để cập nhật ulARAgeing của bạn dựa trên các giá trị trong AccountTerms cột trong cùng một bảng:

update vendor 
set ulARAgeing = (CASE 
                      WHEN AccountTerms = 0 
                        THEN 'Current'
                      WHEN AccountTerms = 1
                        THEN '30 Days'
                      WHEN AccountTerms = 2
                        THEN '60 Days'
                    END);

CASE WHEN tương tự như sử dụng IF..ELSE trong hầu hết các ngôn ngữ lập trình khác. Vì vậy, ở đây chúng tôi sẽ cập nhật ulARAgeing hiện có giá trị thành giá trị chuỗi khác nhau dựa trên điều kiện trong trường hợp câu lệnh when. Vì vậy, ví dụ nếu AccountTerms = 0 thì chúng tôi sẽ cập nhật giá trị cho ulARAgeing thành `` Hiện tại '', v.v.

Để kiểm tra xem câu lệnh trên có hoạt động chính xác hay không, bạn chỉ cần chạy câu lệnh cập nhật ở trên và sau đó chọn lại từ bảng:

 select * from Vendor; 

Kết quả:

+--------------+-----------------+
| AccountTerms |   ulARAgeing    |
+--------------+-----------------+
|            0 |         Current |
|            1 |         30 Days |
|            2 |         60 Days |
+--------------+-----------------+

SQL Fiddle Demo



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra giá trị khóa chính trước khi chèn có nhanh hơn sử dụng try-catch không?

  2. Cách dễ dàng xây dựng lại cơ sở dữ liệu tổng thể trong SQL Server

  3. Cách cập nhật các hàng với một ngày ngẫu nhiên

  4. SQL Server sp_msforeachtable sử dụng để chỉ chọn những bảng đáp ứng một số điều kiện

  5. SSIS Nhiệm vụ để nhập số lượng cột không nhất quán?