2016-11-09 46 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 
相关问题