2015-09-25 62 views
-1

考慮像一個簡單的觀點:創建一個新的列,並指定值depeding上的另一列的值

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 

回答

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; 

SQL Fiddle

+0

完美,謝謝! – Nanaki

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]; 

如果您在系統的許多地方需要此類型值,此解決方案可能會很有用。

相關問題