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

wang520d 2008-08-26 03:51:08
加精
表T_Zone_Inf
Level1 Level2 Level3
-------------------------------------------------- -------------------------------------------------- 安徽省 安庆市 安庆市
安徽省 蚌埠市 蚌埠市
安徽省 亳州市 亳州市
安徽省 巢湖市 巢湖市
北京市 北京市 海淀区
安徽省 滁州市 定远县
陕西省 商洛市 镇安县


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

...全文
1310 62 打赏 收藏 转发到动态 举报
写回复
用AI写文章
62 条回复
切换为时间正序
请发表友善的回复…
发表回复
jwdream2008 2011-11-10
  • 打赏
  • 举报
回复
为啥加精啊!
lengxiaowei 2011-10-24
  • 打赏
  • 举报
回复
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 '陕西省','商洛市','镇安县'



SELECT ALevel=
level1+level2+CASE when charindex(level3,level1+level2)=0 then level3 else '' END
FROM T_Zone_Inf
薇薇 2011-10-20
  • 打赏
  • 举报
回复
SELECT ALevel=
CASE
when Level1=Level2 and Level1=Level3 THEN Level1
when Level1=Level2 and Level1!=Level3 THEN Level1+Level3
WHEN Level2=Level3 THEN Level1+Level2
ELSE Level1+Level2+Level3
END
FROM T_Zone_Inf
meerio 2011-05-09
  • 打赏
  • 举报
回复

USE tempdb
GO

IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[TestTable]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[TestTable]
GO

CREATE TABLE [dbo].[TestTable](
[field1] [varchar](10) NOT NULL,
[field2] [varchar](10) NOT NULL,
[field3] [varchar](10) NOT NULL
)
GO

INSERT INTO [TestTable]([field1],[field2],[field3]) VALUES ('安徽省','安庆市','安庆市')
INSERT INTO [TestTable]([field1],[field2],[field3]) VALUES ('安徽省','蚌埠市','蚌埠市')
INSERT INTO [TestTable]([field1],[field2],[field3]) VALUES ('安徽省','亳州市','亳州市')
INSERT INTO [TestTable]([field1],[field2],[field3]) VALUES ('安徽省','巢湖市','巢湖市')
INSERT INTO [TestTable]([field1],[field2],[field3]) VALUES ('北京市','北京市','海淀区')
INSERT INTO [TestTable]([field1],[field2],[field3]) VALUES ('安徽省','滁州市','定远县')
INSERT INTO [TestTable]([field1],[field2],[field3]) VALUES ('陕西省','商洛市','镇安县')

SELECT * FROM [TestTable]

SELECT field1 + ISNULL(CASE WHEN field1 <> field2 THEN field2 END,'') + ISNULL(CASE WHEN field2 <> field3 THEN field3 END,'') FROM [TestTable]
Elow 2011-04-11
  • 打赏
  • 举报
回复
大神 我的原来可以简化

select replace(replace(Level1,Level2,'')+Level2,Level3,'')+Level3 from @tab

终于比你的短了
Elow 2011-04-11
  • 打赏
  • 举报
回复
我也写了 但是五楼的大大好强大

declare @tab table
(
Level1 varchar(10),
Level2 varchar(10),
Level3 varchar(10)
)
insert @tab select '安徽省','安庆市','安庆市'
union select '安徽省','蚌埠市','蚌埠市'
union select '安徽省','亳州市','亳州市'
union select '安徽省','巢湖市','巢湖市'
union select '北京市','北京市','海淀区'
union select '安徽省','滁州市','定远县'
union select '陕西省','商洛市','镇安县'
union select '陕西省','商洛市','陕西省'
--select * from @tab


select replace(replace(replace(Level1+Level2+Level3,Level1,'')+Level1,Level2,'')+Level2,Level3,'')+Level3 from @tab

我的

select Level1+replace(level2,level1,'')+replace(replace(level3,level2,''),level1,'') from @tab

五楼那位大神的
jhkmnm_123 2010-09-04
  • 打赏
  • 举报
回复
没分了,顶一下
syg5201314 2009-09-18
  • 打赏
  • 举报
回复
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 行)
*/
jsmcc 2009-07-11
  • 打赏
  • 举报
回复
xue xi
txt_paul 2009-03-17
  • 打赏
  • 举报
回复
相加,,路过。
ailliy 2008-10-13
  • 打赏
  • 举报
回复
免费视频:
浪曦ASP.NET企业实战系列 http://down1.langsin.com/001.rar
浪曦NUnit详解视频 http://down1.langsin.com/002.rar
浪曦Struts 2应用开发详解 http://www.verycd.com/topics/210454
VIP视频:
浪曦Java常见笔试、面试题目深度剖析 http://down1.langsin.com/003.rar
浪曦J2EE测试实用指南http://down1.langsin.com/005.rar
浪曦Lucene视频教程 http://down1.langsin.com/006.rar
浪曦电脑维护项目 http://down1.langsin.com/007.rar
培训视频:
浪曦ExtJS视频之Grid控件 http://down1.langsin.com/008.rar
业务QQ:1050429531
tetap 2008-09-05
  • 打赏
  • 举报
回复
来参与的人这么多。支持一下,来杯咖啡吧。

本店供应印尼原产咖啡豆TETAP SEJATI 、经典磨豆机、精致法压壶,价格优惠并有赠品价,欢迎选购!!
http://shop36114923.taobao.com/
Coco孙 2008-09-05
  • 打赏
  • 举报
回复
不错。
xingfuxiao 2008-09-04
  • 打赏
  • 举报
回复
这根本就不用函数啊
lkw5657 2008-09-04
  • 打赏
  • 举报
回复
有哪些函数不能用在视图里面
mingming912 2008-09-04
  • 打赏
  • 举报
回复
Mark
pltjizhe 2008-09-04
  • 打赏
  • 举报
回复
好东西
QQmeiren 2008-09-03
  • 打赏
  • 举报
回复
有些函数是不是不能用在视图里面
changen 2008-09-03
  • 打赏
  • 举报
回复
SQL语句是要做到视图里面的,有些函数是不是不能用在视图里面
ewqtaf 2008-09-03
  • 打赏
  • 举报
回复
顶~~~~~~~~~`
加载更多回复(40)

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧