当前位置: 代码迷 >> Sql Server >> 三个字段两两相同取的其一解决办法
  详细解决方案

三个字段两两相同取的其一解决办法

热度:355   发布时间:2016-04-27 22:00:13.0
三个字段两两相同取的其一
表T_Zone_Inf
Level1 Level2 Level3
-------------------------------------------------- -------------------------------------------------- 安徽省 安庆市 安庆市
安徽省 蚌埠市 蚌埠市
安徽省 亳州市 亳州市
安徽省 巢湖市 巢湖市
北京市 北京市 海淀区 
安徽省 滁州市 定远县 
陕西省 商洛市 镇安县


需要得到结果:
level1+level2+leve3
安徽省安庆市
安徽省蚌埠市
安徽省亳州市
安徽省巢湖市
北京市海淀区
安徽省滁州市定远县
陕西省商洛市镇安县



------解决方案--------------------
SQL code
create table T_Zone_Inf(Level1 nvarchar(10),Level2 nvarchar(10),Level3 nvarchar(10))gocreate function myWork(@L1 nvarchar(10),@L2 nvarchar(10),@L3 nvarchar(10))returns nvarchar(30)asbegindeclare @results nvarchar(30)if (@L1 = @L2)    begin        set @results = @L1 + @L3    endelse    begin        if (@L2 = @L3)            begin                set @results = @L1 + @L2            end        else            begin                set @results = @L1 + @L2 + @L3            end    endreturn @resultsendselect 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
----------------------
安徽省安庆市 
安徽省蚌埠市 
安徽省亳州市 
安徽省巢湖市 
北京市海淀区 
安徽省滁州市定远县 
陕西省商洛市镇安县
---------也可以写个函数调用
------解决方案--------------------
SQL code
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_InfASSELECT ALevel=Level1+CASE WHEN Level2=Level3 THEN Level2     ELSE Level2+Level3ENDFROM T_Zone_InfSELECT * 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 '安徽省', '亳州市', '亳州市' 
  相关解决方案