哎,又提出了新要求

yeshucheng 个体 技术总监/研发总监  2005-06-21 09:56:18
czh czm csb
01 土地
011 生产用地
0111 工业生产用地
011101 生产车间用地
011103 矿山用地
011199 其他工业生产用地
0112 农林牧渔业生产用地
011201 耕地
011207 园地
011299 其他农林牧渔业生产用地
0119 其他生产用地
011901 盐田用地
011999 其他未予分类的生产用地
012 交通邮电用地
012100 铁路交通用地
012200 公路交通用地
012300 水运交通用地
012400 民航交通用地
012500 邮电用地
012900 其他交通邮电用地
现在要查询出每个记录的最后一个子接点:(比如)012200 要在csb显示012900,因为它是最后一个接点
...全文
102 点赞 收藏 12
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
paoluo 2005-06-22

Select
*,
czsb=(Case When Len(czh)=2 Then Null
Else
Case When Exists (Select 1 from TEST Where CharIndex(A.czh,czh)>0 And czh<>A.czh) Then
(Select Max (czh) from TEST Where CharIndex(A.czh,czh)>0 )
Else
(Select Max (czh) from TEST Where CharIndex((Select Max(czh) from TEST Where CharIndex(czh,A.czh)>0 And czh<>A.czh),czh)>0)
End
End)
from TEST A

--------------------------
结果
01 土地 NULL
011 生产用地 011999
0111 工业生产用地 011199
011101 生产车间用地 011199
011103 矿山用地 011199
011199 其他工业生产用地 011199
0112 农林牧渔业生产用地 011299
011201 耕地 011299
011207 园地 011299
011299 其他农林牧渔业生产用地 011299
0119 其他生产用地 011999
011901 盐田用地 011999
011999 其他未予分类的生产用地 011999
012 交通邮电用地 012900
012100 铁路交通用地 012900
012200 公路交通用地 012900
012300 水运交通用地 012900
012400 民航交通用地 012900
012500 邮电用地 012900
012900 其他交通邮电用地 012900
回复
paoluo 2005-06-22
Select
*,
czsb=(Case When Exists (Select 1 from TEST Where CharIndex(A.czh,czh)>0 And czh<>A.czh) Then
(Select Max (czh) from TEST Where CharIndex(A.czh,czh)>0 )
Else
Case When Exists (Select 1 from TEST Where CharIndex(czh,A.czh)>0 And czh<>A.czh) Then
(Select Max (czh) from TEST Where CharIndex((Select Max(czh) from TEST Where CharIndex(czh,A.czh)>0 And czh<>A.czh),czh)>0)
End
End)
from TEST A

------------
结果
01 土地 012900
011 生产用地 011999
0111 工业生产用地 011199
011101 生产车间用地 011199
011103 矿山用地 011199
011199 其他工业生产用地 011199
0112 农林牧渔业生产用地 011299
011201 耕地 011299
011207 园地 011299
011299 其他农林牧渔业生产用地 011299
0119 其他生产用地 011999
011901 盐田用地 011999
011999 其他未予分类的生产用地 011999
012 交通邮电用地 012900
012100 铁路交通用地 012900
012200 公路交通用地 012900
012300 水运交通用地 012900
012400 民航交通用地 012900
012500 邮电用地 012900
012900 其他交通邮电用地 012900

回复
jshecn 2005-06-22
还写语句,首先要找出规律,看你目前的描述很难看出什么规律
回复
yeshucheng 2005-06-22
czh czm csb
01 土地
011 生产用地 011999
0111 工业生产用地 011999
011101 生产车间用地 011999
011103 矿山用地 011999
011199 其他工业生产用地 null
0112 农林牧渔业生产用地 011299
011201 耕地 011299
011207 园地 011299
011299 其他农林牧渔业生产用地 null
0119 其他生产用地 011999
011901 盐田用地 011999
011999 其他未予分类的生产用地 null

是这样的,现在不管它设计的怎么样,它是国家标准的一个表
我只是要初始它到我们的库中而已
回复
paoluo 2005-06-22
czh czm csb
01 土地
011 生产用地 011999
0111 工业生产用地 011999
011101 生产车间用地 011999
011103 矿山用地 011999
011199 其他工业生产用地 null
0112 农林牧渔业生产用地

哥们,你这里的数据有点问题。
为什么0111后面的csb有数据,但是0112的又没有??

你的表设计的不合理,即使能实现也像上个帖子一样,效率不高。
回复
yifan600 2005-06-22
到底楼上指的哪些是父节点?哪些是子节点?
谁又是谁的父节点?
回复
yeshucheng 2005-06-22
czh czm csb
01 土地
011 生产用地 011999
0111 工业生产用地 011999
011101 生产车间用地 011999
011103 矿山用地 011999
011199 其他工业生产用地 null
0112 农林牧渔业生产用地
011201 耕地 011299
011207 园地 011299
011299 其他农林牧渔业生产用地 null
0119 其他生产用地 011999
011901 盐田用地 011999
011999 其他未予分类的生产用地 null
012 交通邮电用地
012100 铁路交通用地
012200 公路交通用地
012300 水运交通用地
012400 民航交通用地
012500 邮电用地
012900 其他交通邮电用地
回复
yifan600 2005-06-22
不知道楼主到底是怎么像的?
你这么建表,对你这样的需求好像很难实现呀。
不知道是不是我们都没有理解楼主的意思?
回复
冷箫轻笛 2005-06-22
01的子节点有两个,一个是011,一个是012。其中它们又分别有自己的子节点

那01为什么显示011999阿?

不如楼主把自己想要的结果列出来
回复
yeshucheng 2005-06-22
一大早就来问大家啊!!!
回复
yeshucheng 2005-06-21
012显示最后它的:012900
01显示最后的:011999
回复
paoluo 2005-06-21
那012、01后面显示啥??
回复
发动态
发帖子
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
社区公告
暂无公告