我有一个名为Vendor的表,在这个表中我有一个名为AccountTerms的列,它只显示一个值(即0,1,2,3),依此类推。我还有一个我想要使用的列(ulARAgeing
)以反映该值的含义,例如:
0: Current
1: 30 Days
2: 60 Days
依旧......
我需要的是一个脚本,它将查看AccountTerms中的值,然后更新ulARAgeing
以显示上面显示的单词值。我该怎么做?
答案 0 :(得分:13)
我将尽可能以简单的方式解释这一点,以便于理解:
我们假设您有一个表Vendor
设置如下:
create table Vendor (AccountTerms int, ulARAgeing varchar(50));
然后,我们将在Vendor
表中插入两个列的一些样本值:
insert into Vendor values
(0,'Test'),
(1,'Test1'),
(2,'Test2');
接下来,我们将根据同一表格中ulARAgeing
列中的值编写更新声明以更新您的AccountTerms
列:
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语句中的条件将现有ulARAgeing
值更新为不同的字符串值。因此,对于例如如果AccountTerms = 0
那么我们会将ulARAgeing
的值更新为“当前'等等。
要检查上述语句是否正常工作,您只需要运行上面的更新语句,然后再次从表中选择:
select * from Vendor;
<强>结果:强>
+--------------+-----------------+
| AccountTerms | ulARAgeing |
+--------------+-----------------+
| 0 | Current |
| 1 | 30 Days |
| 2 | 60 Days |
+--------------+-----------------+
答案 1 :(得分:0)
假设你想要一个简单的脚本来更新,那就是这样的:
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;
如果“ularageing”的值偶然来自另一个表,那么使用“; WITH”的脚本必须使用连接来获取正确的值,而不是使用渐进逻辑。