我有一个有2列的表,我需要根据其中一个列中的值更新其中一个列.

列A是标志(1和0),列B是字符串列.我需要根据A列中的标志更新B列.如果A=1,则B列需要保留其值,如果A列为0,则需要将B列设置为空.

column A.    Column B.      
1            abc         <-keep
0            abc         <-set to blank
1            abc         <-keep


PROC SQL;
update table abc
set column B = 
case when A.column IS NOT NULL then A.column = A.column
else A.column = ' '
end  

推荐答案

只需使用UpdateCASE语句即可完成您想要的操作:

根据A列中的标志更新B列.如果A=1,则B列 需要保留其值,如果A列为0,则需要设置B列 变成空白.

UPDATE
  your_table
SET
  column_B = CASE
            WHEN column_A = 1 THEN column_B -- columnB needs to preserve its value
            ELSE ''  -- set column B to blank.
  END;

之前:

column_A    column_B
1           abc
0           abc
1           abc

update年后:

column_A    column_B
1           abc
0           
1           abc

dbfiddle DEMO

Sql相关问答推荐

使用自动增量ID插入失败(无法将值空插入列ID)

Microsoft Access UNION将长文本字段限制为255个字符

使用交叉应用透视表在SQL中转换分段时间段&

SQL(PostgreSQL)从条件创建点表

前面的语句不喜欢AND LIKE?当try 更新使用ID和日期过滤的表时

在Postgres中实现合并功能的干净方法,因为当目标/源不匹配时

通过之前的连接-这是Oracle的错误吗?

为什么我的SQL标量函数有时会抛出";子查询返回多个值.这是不允许的.

Oracle中的时间戳

重用传递给 node 的参数-postgres upsert查询

统计PostgreSQL中前10个最大大小表的行数

根据时间值提取记录

SAS proc freq 或 proc sql 获取数据子集和整个数据的频率

在 SQL Server 中合并两个 XML 列

Clickhouse:左连接表到外部数组

如何从postgresql中的项目映射(关联数组)设置值?

在SQL中实现表格数据透视类型报表

获取 SQL Server 中每一行的两个-之间的文本

Set vs let vs 在snowflake中声明变量

按 15 分钟递增计数分组,包括 0 计数