我有一个表(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
注意:我的用户/客户在excel表中为不同 WHEN条件提供了BAND值('BANDX90',....)。
上述CASE方法的缺点是,如果我在表中有500条记录,那么我必须使用CASE 'WHEN' STMT 500 TIMES
,这不是一个好的选择。
在计算列时,是否有人遇到过相同的情况?如果是,请分享您的建议!
我们还有其他方法可以做到这一点吗?
答案 0 :(得分:5)
我的用户/客户为excel表中的不同WHEN条件提供了BAND值('BANDX90',....)。
我认为将这个 BAND值信息放在table(BandValues)
中并使用标题
Col1 Age Gender Band_Value
不是逻辑:
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
答案 1 :(得分:1)