TSQL SELECT CASE & 更改第二列值

TSQL SELECT CASE & change second column value

我需要根据 ColumnA 的值更改 ColumnB 的状态。类似伪代码的东西:

CASE WHEN ColumnA = 'True' THEN ColumnB = 'Alert' ELSE ColumnB

我正在使用 Azure SQL 服务器。

伪代码其实看起来很正确。只需将作业放到 ColumnB 并添加一个 end:

SELECT ColumnA, 
       CASE WHEN ColumnA = 'True' THEN 'Alert' ELSE ColumnB END
FROM   MyTable

此外,请注意您可以使用稍微简洁的语法(尽管这主要是个人喜好问题),因为您拥有的所有(一个)条件都在同一个表达式中:

SELECT ColumnA, 
       CASE ColumnA WHEN 'True' THEN 'Alert' ELSE ColumnB END
FROM   MyTable

根据您提供的示例,我认为您甚至不需要 case 语句。一个简单的 update 就可以了。

update YourTable
   set ColumnB = 'Alert'
 where ColumnA = 'True'

另一方面,如果您实际上是根据其他条件同时更新其他列,这会阻止您插入 where ColumnA = 'True' 子句,那么您可以使用 case 这样声明:

update YourTable
   set ColumnB = case when ColumnA = 'True' then 'Alert' else ColumnB end,
       ColumnX = ...
  from YourTable