用于递增值的 SQL Case 语句

标签 sql sql-server sql-server-2008

尝试创建一个计算列,该列的值基于其他四个列中的值。 第 1 列、第 2 列、第 3 列、第 4 列可以是"is"或“否” 计算列中的最终结果(假设称为“进度”)应该是这样的:

Progress = CASE
WHEN [Column1] = 'Yes' THEN Value+1
WHEN [Column2] = 'Yes' THEN Value+1
WHEN [Column3] = 'Yes' THEN Value+1
WHEN [Column4] = 'Yes' THEN Value+1
ELSE 0 END

希望这是有道理的,因为显然上述语法不正确。

最佳答案

听起来这就是您想要的。

Progress = 
CASE WHEN [Column1] = 'Yes' THEN 1 ELSE 0 END +
CASE WHEN [Column2] = 'Yes' THEN 1 ELSE 0 END +
CASE WHEN [Column3] = 'Yes' THEN 1 ELSE 0 END + 
CASE WHEN [Column4] = 'Yes' THEN 1 ELSE 0 END 

对于每个"is",这将返回 0 + 1。

关于用于递增值的 SQL Case 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16155462/

相关文章:

mysql - 从其他表更新数据库平均值中的字段

sql - 如何从多列分组中返回一行

sql-server - 将扩展属性附加到存储过程结果集

sql - 如何从 sequelize 迁移中获取原始 SQL

mysql - Mysql如何使用子查询定义SELECT LIMIT偏移量?

php - mssql和左连接重复记录

c# - 如何设计两组数据交集的sql查询

javascript - 我正在尝试使用 php 中的 pdo 在 sql server 中插入日期和时间

sql-server - 如何从被截断的表中恢复数据

python - SQLAlchemy 中的条件添加语句