2011-03-02 58 views
1

我有一個僱員表選擇與案件情況SQLSERVER statment

empname code1 code2 
kiran aa bng 
manju yh yh 
anu  yu01 yuo1 

現在我需要做這樣的

SELECT case when (employee.code1)='' 
then   
     mappingcode.Code    
    else    
then 
     employee.code2   
    end as Code 
FROM 
employee where bic1= 'kiran' 

的SELECT語句,但我得到一個錯誤,

我項目我有一個類似的問題,只是ot expalin probem我已經定義了問題

我需要做什麼h ERE首先檢查代碼1,如果是空集,從另一個表的值,如果不分配碼2的值CODE1

代碼1 - >代碼2

我得到一個錯誤的多部分組成的標識符employee.code2 希望我的問題很明確

任何人都可以幫助我的語法如何實現它。

感謝

王子

+0

什麼是'mappingcode'和'employee'表的結構? – 2011-03-02 13:48:16

+1

你確定錯誤信息是關於'employee.code2'嗎?從你的腳本看來,違規的部分應該是'mappingcode.Code',因爲你沒有將'mappingcode'加入到你的查詢中。您發佈的查詢不完整或者錯誤消息未與其連接。 – 2011-03-02 14:18:49

回答

1

如果你只是想選擇,我認爲這將有助於你:

SELECT empname, CASE 
WHEN employee.code1 IS NULL THEN mappingcode.code 
ELSE 
employee.code2 end as Code1 
FROM employee INNER JOIN mappingcode ON employee.empname = mappingcode.empname 

如果你想更新,試試這個:

Update employee set code1 = x.code from (SELECT empname, CASE 
WHEN employee.code1 IS NULL THEN mappingcode.code 
ELSE 
employee.code2 end as code 
FROM employee INNER JOIN mappingcode ON employee.empname = mappingcode.empname) x 
inner join employee on employee.empname = x.empname 

不知道更多關於你的模式,我認爲這是你正在尋找的。

謝謝舍甫琴科您指出我在我的文章一樣選擇並稍有不慎:)

+1

這就是你通過複製和粘貼獲得的:兩個完全相同的代碼。 :)除此之外,我認爲這也有一些問題:'當僱員是空'。 – 2011-03-02 18:18:45

+0

@Andriy ...這是真的:)現在修復它:) – 2011-03-02 18:20:39