日期:2014-05-19 浏览次数:21092 次
create table T_Zone_Inf( Level1 nvarchar(10), Level2 nvarchar(10), Level3 nvarchar(10) ) go create function myWork(@L1 nvarchar(10),@L2 nvarchar(10),@L3 nvarchar(10)) returns nvarchar(30) as begin declare @results nvarchar(30) if (@L1 = @L2) begin set @results = @L1 + @L3 end else begin if (@L2 = @L3) begin set @results = @L1 + @L2 end else begin set @results = @L1 + @L2 + @L3 end end return @results end select dbo.myWork(Level1,Level2,Level3) from T_Zone_Inf
------解决方案--------------------
select mm=case when b=c then b else b+c end from table
------解决方案--------------------
create table T_Zone_Inf(Level1 varchar(10),Level2 varchar(10),Level3 varchar(10))
insert T_Zone_Inf select '安徽省','安庆市','安庆市'
insert T_Zone_Inf select '安徽省','蚌埠市','蚌埠市'
insert T_Zone_Inf select '安徽省','亳州市','亳州市'
insert T_Zone_Inf select '安徽省','巢湖市','巢湖市'
insert T_Zone_Inf select '北京市','北京市','海淀区'
insert T_Zone_Inf select '安徽省','滁州市','定远县'
insert T_Zone_Inf select '陕西省','商洛市','镇安县'
-----------------------
select Level1+replace(level2,level1,'')+replace(replace(level3,level2,''),level1,'') from T_Zone_Inf
----------------------
安徽省安庆市
安徽省蚌埠市
安徽省亳州市
安徽省巢湖市
北京市海淀区
安徽省滁州市定远县
陕西省商洛市镇安县
---------也可以写个函数调用
------解决方案--------------------
CREATE TABLE T_Zone_Inf (Level1 varchar(20),Level2 varchar(20),Level3 varchar(20)) insert into T_Zone_Inf select '安徽省','安庆市','安庆市' union all select '安徽省','蚌埠市','蚌埠市' union all select '安徽省','亳州市','亳州市' union all select '安徽省','巢湖市','巢湖市' union all select '北京市','北京市','海淀区' union all select '安徽省','滁州市','定远县' union all select '陕西省','商洛市','镇安县' CREATE VIEW VB_T_Zone_Inf AS SELECT ALevel=Level1+ CASE WHEN Level2=Level3 THEN Level2 ELSE Level2+Level3 END FROM T_Zone_Inf SELECT * FROM VB_T_Zone_Inf /* ALevel ------------------------ 安徽省安庆市 安徽省蚌埠市 安徽省亳州市 安徽省巢湖市 北京市北京市海淀区 安徽省滁州市定远县 陕西省商洛市镇安县 (所影响的行数为 7 行) */
------解决方案--------------------
declare @t table(Level1 varchar(100),Level2 varchar(100),Level3 varchar(100))
insert @t select '安徽省', '蚌埠市', '蚌埠市'
insert @t select '安徽省', '亳州市', '亳州市'