-2

我有一个表(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这不是一个好的选择。

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

我们还有其他方法可以做到这一点吗?

4

2 回答 2

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
于 2013-07-23T04:56:39.400 回答
1

如果没有逻辑,BANDX__那么最好使用表中的列作为您的Then语句。

这是 SQLFiddelDemo

下面是显示我意见的图片:

在此处输入图像描述

于 2013-07-23T05:57:47.803 回答