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哪个不是一个好的选择.
在计算列时,是否有人遇到过相同的情况?如果是,请分享您的建议!
有没有其他方法可以实现这一目标?
我的用户/客户为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)