科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道三个字段两两相同取的其一

三个字段两两相同取的其一

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

三个字段两两相同取的其一

作者:csdn 来源:csdn 2009年12月18日

关键字: MS-SQL Server 问答

  • 评论
  • 分享微博
  • 分享邮件

三个字段两两相同取的其一

表T_Zone_Inf
Level1                                        Level2                                    Level3
-------------------------------------------------- -------------------------------------------------- 安徽省                                                安庆市                                                安庆市
安徽省                                                蚌埠市                                                蚌埠市
安徽省                                                亳州市                                                亳州市
安徽省                                                巢湖市                                                巢湖市
北京市                                                北京市                                                海淀区
安徽省                                                滁州市                                                定远县
陕西省                                                商洛市                                                镇安县


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

 

SQL codecreate 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

 

SQL codeCREATE 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 行)
*/

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章