考虑一个简单的观点,如:
JOB TYPE DAYS
1 A 10
2 B 2
3 A 6
4 C 8
我想添加一个新列(原始表中不存在),称为ADP。此列将根据TYPE列填充值。如果该值为A,那么ADP列将填充CMM
值,如果其B带有CM
,并且它的C带有PMM
值。
结果就是这样:
JOB TYPE DAYS ADP
1 A 10 CMM
2 B 2 CM
3 A 6 CMM
4 C 8 PMM
答案 0 :(得分:1)
您可以使用CASE
:
SELECT
JOB,
TYPE,
DAYS,
ADP = CASE [TYPE]
WHEN 'A' THEN 'CMM'
WHEN 'B' THEN 'CM'
WHEN 'C' THEN 'PMM'
ELSE NULL
END
FROM your_table;
或者您可以创建查找表:
<强> SqlFiddleDemo1&2 强>
CREATE TABLE lookup([Type] NVARCHAR(1), Val NVARCHAR(10), UNIQUE([Type]));
INSERT INTO lookup([Type], [Val])
VALUES ('A' , 'CMM'), ( 'B' ,'CM'),( 'C', 'PMM');
SELECT
JOB,
t.[TYPE],
DAYS,
ADP = l.[val]
FROM your_table t
LEFT JOIN lookup l
ON t.[type] = l.[type];
如果您需要在系统的许多位置使用此类型值,则此解决方案可能很有用。
答案 1 :(得分:1)
使用CASE
表达式。
select JOB,TYPE,DAYS,
case when TYPE = 'A' then 'CMM'
when TYPE = 'B' then 'CM'
when TYPE = 'C' then 'PMM'
else null
end as ADP
from tablename;