日期:2014-05-18  浏览次数:20511 次

请教一个sql选择出来数据显示的问题?
现在有一个字段,只有3个值,分别用0,1,2来代替的
我如果不想建新表的话,能不能在显示的时候显示对应的,

已处理,未处理,已经删除?

表:
姓名 标志
张三 1
李四 2 
王五 0

在不添加新表的情况下,显示的时候显示下面的格式

姓名 标志
张三 已处理
李四 未处理
王五 已删除





------解决方案--------------------
SQL code
SELECT 
姓名,CASE 标志 WHEN 1 THEN '已处理'
  WHEN 2 THEN '未处理'
  ELSE '已删除'
  END AS 标志
FROM 表

------解决方案--------------------
with tb as (
select '张三' name, 1 type union all
select '李四', 2 union all
select '王五', 0 )
select name 姓名,case when type=1 then '已处理' when type=2 then '未处理' when type=0 then '已删除' end 标志 from tb

------解决方案--------------------
declare @T table([name] varchar(20),flag int)
insert into @T
select '张三',0 union all
select '李四',1 union all
select '王五',2

--已处理,未处理,已经删除?
select [name],case flag when 0 then '已处理' when 1 then '未处理' when 2 then '已经删除' end as flag from @T

name flag
-------------------- --------
张三 已处理
李四 未处理
王五 已经删除
------解决方案--------------------
SQL code


select [姓名],[标志]=case when [标志]=0 then N'已删除'
                         when [标志]=1 then N'已处理'
                         when [标志]=2 then N'未处理'
                         else N'' end
from 表