求树的查询
类别编码,类别名称,级次,是否末级
1原材料10
101电气20
10101高压电器元件类30
1010101高压真空断路器41
1010102高压开关类41
1010103高压绝缘件类41
1010104高压二次元器件类41
1010105高压其它元件类41
1010106高压互感器41
10102低压电器元件类30
1010201低压断路器类40
101020101万能式断路器类51
101020102塑壳断路器类51
101020103小型断路器类51
想实现
1 原材料 101 电气 10101 高压电气元件类
谢谢
[解决办法]
动个小手术,加上个父级编码,你自己再递归查找就可以了
CREATE TABLE #Temp( [ID] [int] IDENTITY(1,1) NOT NULL, [类别编码] [nvarchar](50) NULL, [类别名称] [nvarchar](50) NULL, [级次][int] NULL, [是否末级][int]NULL)insert into #tempselect '1', '原材料', 1, 0 union allselect '101', '电气', 2, 0 union allselect '10101', '高压电器元件类', 3, 0 union allselect '1010101', '高压真空断路器', 4, 1 union allselect '1010102', '高压开关类', 4, 1 union allselect '1010103', '高压绝缘件类', 4, 1 union allselect '1010104', '高压二次元器件类', 4, 1 union allselect '1010105', '高压其它元件类', 4, 1 union allselect '1010106', '高压互感器', 4, 1 union allselect '10102', '低压电器元件类', 3, 0 union allselect '1010201', '低压断路器类', 4, 0 union allselect '101020101', '万能式断路器类', 5, 1 union allselect '101020102', '塑壳断路器类', 5, 1 union allselect '101020103', '小型断路器类', 5,1 ;with abc as(select *,case when (级次>1) then left(类别编码,len(类别编码)-2) end 父级编码 from #Temp)select * from abc order by 类别编码drop table #Temp