具有许多WHEN子句的案例结构

oOo*_*oOo -2 sql t-sql sql-server

我有一个表(TestTable),数据如下

在此输入图像描述

我需要根据ColA,Age,Gender列值创建一个计算列"Band".如下

 CASE

 WHEN ColA='A' AND AGE=1 AND GENDER='M' THEN 'BANDX90'
 WHEN ColA='A' AND AGE=1 AND GENDER='F' THEN 'BANDX91'
 .
 .
 .
 .
 WHEN ColA='A' AND AGE=65 AND GENDER='M' THEN 'BANDX18'
 WHEN ColA='A' AND AGE=65 AND GENDER='F' THEN 'BANDX19'
 WHEN ColA='B' AND AGE=1  AND GENDER='M' THEN 'BANDX39'
 WHEN ColA='B' AND AGE=1  AND GENDER='F' THEN 'BANDX56'  
 ELSE NULL
 END AS BAND           
Run Code Online (Sandbox Code Playgroud)

注意:我的用户/客户为excel表中的不同 WHEN条件提供了BAND值('BANDX90',....).

上述CASE方法的缺点是,如果我在表中有500条记录,那么我必须使用CASE 'WHEN' STMT 500 TIMES哪个不是一个好的选择.

在计算列时,是否有人遇到过相同的情况?如果是,请分享您的建议!

有没有其他方法可以实现这一目标?

Luv*_*Luv 5

我的用户/客户为excel表中的不同WHEN条件提供了BAND值('BANDX90',....).

我认为将这个BAND值信息放入table(BandValues)标题就好了

Col1 Age Gender Band_Value
Run Code Online (Sandbox Code Playgroud)

不是逻辑:

Update T
Set T.Band = B.Band_Value
From Testtable T
INNER JOIN BandValues B
ON T.Col1=B.Col1
AND T.Age=B.Age
AND T.Gender=B.Gender
Run Code Online (Sandbox Code Playgroud)