2016-11-09 47 views
-3

你好,我有以下查詢:有根據的情況下一個值Select查詢

Select Id, PosId from myTable 

這回是這樣的:

1009,2或1010,3等。

我想要做的是更改PosId,例如,如果PosId = 2將其更改爲「經理」等我試圖解決這個使用CASE or If,但我不知道太多關於在T-SQL中使用它, 怎麼樣 我能解決這個問題嗎?

這裏是我試過

Select Id, 
Case When PosId = 2 then 'Manager' Else 0 End 
From myTable 

但有了這個,我得到

附近有語法錯誤「案例」

+4

你有一個具有PosId和意味着什麼的說明表。通常情況下,這是如何完成的。 –

+0

不,PosId與其他表格沒有關係。 –

+1

您發佈的代碼不會拋出語法錯誤,除非它具有複製/粘貼中的某些奇怪的字符。但是,由於您在同一個case語句中使用數字值和字符串,所以會引發轉換錯誤 – dfundako

回答

0

肖恩提到的,這樣做會最徹底的方法將「查找」放在一個表中。

例如:

--Create the table 
create table lookup 
(
posId int, 
description varchar(50) 
); 
insert into lookup values (1, 'Supervisor'); 
insert into lookup values (2, 'Manager'); 
insert into lookup values (3, 'Developer'); 
insert into lookup values (4, 'Janitor'); 
insert into lookup values (5, 'Mouse'); 
insert into lookup values (6, 'Dust'); 
insert into lookup values (7, 'Carpet'); 
insert into lookup values (8, 'Tester'); 
select * from lookup; 

然後,您可以使用一個簡單的SELECT語句:

Select Id, description from myTable m 
left outer join lookup l on m.PosId=l.posId 

如果您需要幫助建立的查找表的INSERT語句,我發現它有助於創建在A列中插入查找值(「),B列中的第一查找值」1「,C列中的中間部分」,「,第二列中的第二查找值」Supervisor「 ,以及關閉文本「');」在E列中,然後在F列中創建一個「= CONCATENATE(A1,B1,C1,D1,E1)」公式;然後將公式拖到查找列表的末尾,最後將您的F列複製到SQL Query窗口並執行它以將這些值實際插入到表中。

你也可以使用這個Excel串連技術「手工」打造你的case語句,它應該是這樣的:

Select Id, 
Case 
When PosId = 2 then 'Manager' 
when PosId = 3 then 'Developer' 
Else 'No Value' 
End 
From myTable 
相關問題