日期:2014-05-19 浏览次数:21174 次
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 '安徽省', '亳州市', '亳州市'