根据一个值选择具有大小写的查询

时间:2016-11-09 18:07:02

标签: sql sql-server

您好我有以下查询:

Select Id, PosId from myTable 

返回的内容如下:

  

1009,2或1010,3等。

我想要做的是更改PosId,例如,如果PosId = 2将其更改为“Manager”等,我正在尝试使用CASE or If解决此问题,但我不太了解使用在T-SQL中,我该如何解决这个问题?

这是我试过的

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

但是我得到了

  

“案例”

附近的语法不正确

1 个答案:

答案 0 :(得分:0)

正如肖恩所提到的,最简洁的方法是将#34;查找"在一张桌子里。

例如:

--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列中,第一个查找值&#)创建电子表格会很有帮助34; 1"在B列中,中间部分",'"在C列中,第二个查找值"主管"在D列中,以及结束文本"');"在E列中,然后创建" = CONCATENATE(A1,B1,C1,D1,E1)" F栏中的公式;然后将公式拖到查找列表的末尾,最后将F列复制到SQL查询窗口并执行它以实际在表中插入这些值。

你也可以使用这种excel连接技术来构建你的case语句"手动",它们看起来像这样:

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