专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Sql Server

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

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
三个字段两两相同取的其一
表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)
)
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
----------------------
安徽省安庆市 
安徽省蚌埠市 
安徽省亳州市 
安徽省巢湖市 
北京市海淀区 
安徽省滁州市定远县 
陕西省商洛市镇安县
---------也可以写个函数调用
------解决方案--------------------
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_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 '安徽省', '亳州市', '亳州市' 
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: