以下Case语句是否有意义?

时间:2016-09-27 19:15:33

标签: sql sql-server sql-server-2012 case case-statement

下面的case语句应该是每当CL.TYPE = DIAG.TYPE时检索数据然后DIAG.TYPE为真,如果不是则为NULL。这有意义吗?或者这是最合乎逻辑的方式吗?

(CASE
WHEN CL.TYPE2 = DIAG.TYPE
OR CL.TYPE3 = DIAG.TYPE 
OR CL.TYPE4 = DIAG.TYPE 
OR CL.TYPE5 = DIAG.TYPE 
OR CL.TYPE6 = DIAG.TYPE 
OR CL.TYPE7 = DIAG.TYPE 
OR CL.TYPE8 = DIAG.TYPE         THEN SUBSTRING(DIAG.TYPE,2,1)
                                ELSE NULL
END)

1 个答案:

答案 0 :(得分:4)

您的查询似乎很好,您可以使用in来减少OR次重复,以使您的查询更具可读性:

(CASE
WHEN  DIAG.TYPE in (CL.TYPE2, CL.TYPE3, CL.TYPE4, CL.TYPE5, CL.TYPE6, CL.TYPE7, CL.TYPE8)  
THEN SUBSTRING(DIAG.TYPE,2,1)
ELSE NULL
END)