我有一个名为Vendor的表格,在这个表格中我有一个叫做AccountTerms的列,它只显示一个值(例如0、1、2、3等等)。我还有一列(ulARAgeing
)需要使用,以反映该值的含义,例如:
0: Current
1: 30 Days
2: 60 Days
我需要的是一个脚本,它将查看AccountTerms中的值,然后更新ulARAgeing以显示上面显示的单词值。如何做到这一点?
我有一个名为Vendor的表格,在这个表格中我有一个叫做AccountTerms的列,它只显示一个值(例如0、1、2、3等等)。我还有一列(ulARAgeing
)需要使用,以反映该值的含义,例如:
0: Current
1: 30 Days
2: 60 Days
我会尽可能以简单的方式来解释这个问题,让大家更容易理解:
假设你有一个名为Vendor
的表格,设置如下:
create table Vendor (AccountTerms int, ulARAgeing varchar(50));
接下来,我们会在Vendor
表的两列中插入一些示例值:
insert into Vendor values
(0,'Test'),
(1,'Test1'),
(2,'Test2');
接下来,我们将编写一条更新语句,根据同一表格中AccountTerms
列中的值来更新您的ulARAgeing
列:
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
类似于大多数其他编程语言中使用 IF..ELSE
语句。因此,在这里,我们将根据 case when 语句中的条件将现有的 ulARAgeing
值更新为不同的字符串值。例如,如果 AccountTerms = 0
,则我们将更新 ulARAgeing
的值为“Current”,依此类推。
要检查上述语句是否正确工作,只需运行上面的更新语句,然后再从表中进行选择:
select * from Vendor;
结果:
+--------------+-----------------+
| AccountTerms | ulARAgeing |
+--------------+-----------------+
| 0 | Current |
| 1 | 30 Days |
| 2 | 60 Days |
+--------------+-----------------+
update
Vendor
set ulARAgeing = 'Current'
where AccountTerms = 0;
;WITH CTE
AS (select
AccountTerms
,ulARAgeing
,CONCAT((AccountTerms * 30), ' Days') as _ulARAgeing
from
Vendor)
UPDATE CTE
SET ulARAgeing = _ulARAgeing;