首页 > 解决方案 > 多条件计算列

问题描述

我试图弄清楚什么是最好的方法:

If C="WORD":

     A = 51 if B is between 0 and 2000
     A = 102 if B is between 2001 and 8000
     A = 204 if B is higher than 8000
     AND if D is ticked (checkbox) the A value turns into half`

我需要将此列“持久化”,以便我可以在报告中使用它。

对于另一列,我使用了这个并且有效:

ALTER TABLE dbo.mytable 
    ADD C AS (A + B) / CASE D WHEN 1 THEN 4 ELSE 2 END;

从这个其他代码开始,但它不起作用,它仍然没有复选框的条件。

ALTER TABLE dbo.tablename
    ADD FieldA AS (CASE 
                      WHEN FieldC = "Word"  
                         THEN
                            CASE 
                               WHEN FieldB > 0 AND FieldB < =2000 
                                  THEN 102
                               WHEN FieldB > 2000 AND FieldB <= 8000 
                                  THEN 204
                               WHEN FieldB > 8000 
                                  THEN 306
                               ELSE NULL         
                            END,

我该如何进行?

标签: sqlsql-server

解决方案


您的尝试“不起作用”,因为您有两个CASE表达式,只有一个END. 你需要一个ENDfor each CASE


推荐阅读