尝试创建一个计算列,该列的值将基于其他四列中的值。 第1栏,第2栏,第3栏,第4栏可以是“是”或“否” 计算列中的最终结果,比如称为Progress,应该是这一行:
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
希望这很有意义,因为上面的语法显然不正确。
答案 0 :(得分:6)
听起来这就是你想要的。
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
对于每个“是”,这将返回0 + 1。
答案 1 :(得分:1)
在SQL Server中:
SELECT *
FROM mytable
CROSS APPLY
(
SELECT COALESCE(SUM(CASE val WHEN 'yes' THEN 1 END), 0)
FROM (VALUES (NULL)) q(v)
UNPIVOT
(
val FOR col IN
(column1, column2, column3, column4)
) c
) q (progress)
请参阅SQLFiddle。