SQL 查询判断是否末级

couldhui 2011-03-16 11:28:38
有如下表,科目很长,如何使用SQL判断科目编码字段是否为末级,如2010101为末级,2010102也是末级,20101不是末级,有个思路取出编码判断是否重复,重复就说明不是末级,不重复就是末级,但不知道语法如何写~!
编码 名称
201 一般公共服务
20101 人大事务
2010101 行政运行(人大)
2010102 一般行政管理事务(人大)
2010103 机关服务(人大)
2010104 人大会议
2010105 人大立法
2010106 人大监督
2010107 代表培训
2010108 代表工作
2010109 人大信访工作
2010150 事业运行(人大)
2010199 其他人大事务支出
20102 政协事务
2010201 行政运行(政协)
2010202 一般行政管理事务(政协)
2010203 机关服务(政协)
2010204 政协会议
2010205 委员视察
2010206 参政议政(政协)
2010250 事业运行(政协)
2010299 其他政协事务支出
20103 政府办公厅(室)及相关机构事务
2010301 行政运行(政府办公厅)
2010302 一般行政管理事务(政府办公厅)
2010303 机关服务(政府办公厅)
2010304 专项服务(政府办公厅)
2010305 专项业务活动(政府办公厅)
2010306 政务公开审批
2010307 法制建设
2010308 信访事务
2010309 参事事务
2010350 事业运行(政府办公厅)
2010399 其他政府办公厅(室)及相关机构事务支出
20104 发展与改革事务
2010401 行政运行(发展与改革)
2010402 一般行政管理事务(发展与改革)
2010403 机关服务(发展与改革)
2010404 战略规划与实施
2010405 日常经济运行调节
2010406 社会事业发展规划
2010407 经济体制改革研究
2010408 物价管理
2010450 事业运行(发展与改革事务)
2010499 其他发展与改革事务支出
20105 统计信息事务
2010501 行政运行(统计信息)
2010502 一般行政管理事务(统计信息)
2010503 机关服务(统计信息)
2010504 信息事务
2010505 专项统计业务
2010506 统计管理
2010507 专项普查活动
2010508 统计抽样调查
2010550 事业运行(统计信息)
2010599 其他统计信息事务支出
20106 财政事务
2010601 行政运行(财政)
2010602 一般行政管理事务(财政)
2010603 机关服务(财政)
2010604 预算编制业务
2010605 财政国库业务
2010606 财政监察
2010607 信息化建设(财政)
2010650 事业运行(财政)
2010699 其他财政事务支出
20107 税收事务
2010701 行政运行(税收)
2010702 一般行政管理事务(税收)
...全文
381 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
快溜 2011-03-16
[Quote=引用 2 楼 dawugui 的回复:]
select t.* , case when not exists(select 1 from tb where charindex(编码,t.编码) > 0) then '末级' else '非末级' end from tb t
[/Quote]
回复
fcuandy 2011-03-16
如果
2007010101
200701010101
200701010102
200601
20060101

以此为例,第五行是末级了, 1楼的做法属取巧。
缺少必要条件

select *,(case whe .....<(select (max(......)) from tb where 编码 like a.编码+'%' then ... ) from tb a

或者
select *, (case when exists(select 1 from tb where 编码 like a.编码 +'_%') then '不是' else '是' end) from tb a
回复
dawugui 2011-03-16
select t.* , case when not exists(select 1 from tb where charindex(编码,t.编码) > 0) then '末级' else '非末级' end from tb t
回复
快溜 2011-03-16

select *,(case when len(编码)<(select max(len(编码)) from tb) then '不是末节点' else '是' end)
from tb
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2011-03-16 11:28
社区公告
暂无公告