可以参考一下:declare @a table(col_oo1 varchar(50)) insert @a select '单位一'union all select NULL union all select NULL union all select NULL union all select NULL union all select '单位二' union all select NULL union all select NULL union all select NULL union all select '单位三' union all select NULL union all select NULL union all select NULLDECLARE @N VARCHAR(40) SET @N='单位一'UPDATE @a set col_oo1=@n,@n=case when col_oo1 is null then @n else col_oo1 end select * from @a
搞定了,谢谢兵哥的代码 DECLARE @N VARCHAR(4000) SET @N=''UPDATE 产品分类目录_下 set F1=@n,@n=case when F1 = '' then @n else F1 endUPDATE 产品分类目录_下 set F2=@n,@n=case when F2 = '' then @n else F2 end where not(f2='' and f3='' and f4='' and f5='')UPDATE 产品分类目录_下 set F3=@n,@n=case when F3 = '' then @n else F3 end where not(f3='' and f4='' and f5='')UPDATE 产品分类目录_下 set F4=@n,@n=case when F4 = '' then @n else F4 end where not(f4='' and f5='')转树形: SELECT ID, CASE WHEN f2 = '' THEN 0 ELSE (SELECT TOP 1 ID FROM (SELECT ID, f = f1 + f2 + f3 + f4 + f5 FROM 产品分类目录_下 WHERE f1 = a.f1 AND f2 IN (a.f2, '') AND f3 IN (a.f3, '') AND f4 IN (a.f4, '') AND f5 IN (a.f5, '') AND ID <> a.ID) b ORDER BY f DESC) END AS ParentID,Name FROM 产品分类目录_下 AS a
1 NULL 47 建筑工程服务
2 NULL 01 房屋工程建筑
3 NULL 01 住宅及公共房屋建筑工程服务
4 NULL 01 00 住宅及公共房屋建筑地基与基础工程服务 4710
5 NULL 02 00 住宅及公共房屋建筑砖石工程服务 4710
6 NULL 03 00 住宅及公共房屋建筑起重设备工程服务 4710
7 NULL 04 00 住宅及公共房屋建筑混凝土预制构件工程服务 4710
8 NULL 05 00 住宅及公共房屋建筑钢结构工程服务 4710
9 NULL 06 00 住宅及公共房屋建筑预应力工程服务 4710
10 NULL 07 00 住宅及公共房屋建筑幕墙工程服务 4710
11 NULL 08 00 住宅及公共房屋建筑防水工程服务 4710
12 NULL 09 00 住宅及公共房屋建筑附着升降脚手架服务 4710
13 NULL 10 00 住宅及公共房屋金属门窗工程服务 4710
14 NULL 99 00 住宅及公共房屋建筑其他工程服务 4710
15 NULL 02 工矿房屋建筑工程服务
16 NULL 01 00 工矿房屋建筑地基与基础工程服务 4710
17 NULL 02 00 工矿房屋建筑砖石工程服务 4710
18 NULL 03 00 工矿房屋建筑起重设备工程服务 4710
19 NULL 04 00 工矿房屋建筑混凝土预制构件工程服务 4710
20 NULL 05 00 工矿房屋建筑钢结构工程服务 4710
21 NULL 06 00 工矿房屋建筑预应力工程服务 4710
22 NULL 07 00 工矿房屋建筑幕墙工程服务 4710
23 NULL 08 00 工矿房屋建筑防水工程服务 4710
24 NULL 09 00 工矿房屋建筑附着升降脚手架服务 4710
25 NULL 10 00 工矿房屋金属门窗工程服务 4710
26 NULL 99 00 工矿房屋建筑其他工程服务 4710
27 NULL 02 土木工程建筑
28 NULL 01 铁路、道路、隧道和桥梁工程建筑
29 NULL 01 铁路工程施工服务
30 NULL 01 铁路路基工程服务 4721
31 NULL 02 铁路铺轨桥梁工程服务 4721
32 NULL 03 铁路电务工程服务 4721
33 NULL 04 铁路电气化工程服务 4721
34 NULL 05 铁路隧道工程服务 4721
35 NULL 99 其他铁路工程服务 4721
36 NULL 02 公路工程施工服务
37 NULL 01 公路路基工程施工服务 4721
38 NULL 02 公路路面工程施工服务 4721
39 NULL 03 公路交通工程施工服务 4721
40 NULL 04 公路桥梁工程施工服务 4721
41 NULL 05 公路隧道工程施工服务 4721
42 NULL 99 其他公路工程施工服务 4721
43 NULL 03 城市道路工程施工服务
44 NULL 01 城市道路路基工程施工服务 4721
45 NULL 02 城市道路路面工程施工服务 4721
46 NULL 03 城市道路交通工程施工服务 4721
47 NULL 04 城市道路桥梁工程施工服务 4721
48 NULL 99 其他城市道路工程施工服务 4721
49 NULL 04 城市轨道工程施工服务
50 NULL 01 城市轨道隧道工程服务 4721
51 NULL 02 城市轨道路基工程服务 4721
52 NULL 03 城市轨道桥梁工程服务 4721
53 NULL 04 城市轨道铺轨工程服务 4721
54 NULL 05 城市轨道电务工程服务 4721
55 NULL 99 其他城市轨道工程服务 4721
56 NULL 05 机场及跑道工程服务
57 NULL 01 机场场道工程服务 4721
58 NULL 02 机场空管工程及航站楼弱电系统工程服务 4721
59 NULL 03 机场目视助航工程服务 4721
60 NULL 99 机场其他工程服务 4721
61 NULL 99 00 其他道路、桥梁、隧道施工服务 4721
62 NULL 02 水利和港口工程建筑
63 NULL 01 水利工程施工服务
64 NULL 01 水利土石方工程施工服务 4722
65 NULL 02 水工建筑物基础处理工程施工服务 4722
66 NULL 03 水工大坝工程施工服务 4722
67 NULL 04 水工隧洞工程施工服务 4722
68 NULL 05 水工金属结构制作与安装工程施工服务 4722
69 NULL 06 水利水电机电设备安装工程施工服务 4722
70 NULL 07 河湖整治工程施工服务 4722
71 NULL 08 堤防工程施工服务 4722
72 NULL 99 其他水利工程施工服务 4722
73 NULL 02 港口与航道工程施工服务
74 NULL 01 港口土石方工程施工服务 4722
75 NULL 02 港口与海岸工程施工服务 4722
76 NULL 03 港口装卸设备安装工程施工服务 4722
77 NULL 04 航道工程施工服务 4722
78 NULL 05 通航建筑工程施工服务 4722
79 NULL 06 通航设备安装工程施工服务 4722
80 NULL 07 水上交通管制工程施工服务 4722
81 NULL 08 其他港口与航道工程施工服务 4722
82 NULL 03 工矿工程建筑
83 NULL 01 10 矿山工程施工服务 4723
84 NULL 02 09 火电设备安装工程 4723
85 NULL 03 08 核工程施工服务 4723
86 NULL 04 07 炉窑工程施工服务 4723
87 NULL 05 06 冶炼机电设备安装工程施工服务 4723
88 NULL 06 05 化工石油设备安装工程施工服务 4723
89 NULL 07 04 海洋石油工程施工服务 4723
90 NULL 08 03 无损检测工程施工服务 4723
91 NULL 09 02 环保工程施工服务 4723
92 NULL 10 01 防腐保温工程施工服务 4723
93 NULL 99 00 其他共矿工程施工服务 4723
94 NULL 04 架线和管道工程建筑
95 NULL 01 架线工程施工服务
96 NULL 01 送变电工程施工服务 4724
97 NULL 02 电信工程施工服务 4724
98 NULL 03 城市及道路照明工程施工服务 4724
99 NULL 99 其他架线工程施工服务 4724
100 NULL 02 管道工程施工服务
101 NULL 01 油、气、水、浆等远程输送管道施工服务 4724
102 NULL 02 城市管道施工服务 4724
103 NULL 09 其他管道施工服务 4724
104 NULL 99 其他土木工程建筑
105 NULL 01 00 高耸建筑物工程施工服务 4729
106 NULL 02 00 园林古建筑工程施工服务 4729
107 NULL 03 00 体育场地设施工程 4729
108 NULL 04 00 露天娱乐设施工程活动 4729
109 NULL 05 00 城市固定标志设施活动 4729
110 NULL 06 00 水井设施工程活动 4729
111 NULL 99 00 其他未列明的土木建筑活动 4729
112 NULL 03 建筑安装业
113 NULL 01 电子工程施工服务
114 NULL 01 00 雷达、导航与测控系统工程 4800
115 NULL 02 00 监控系统工程 4800
116 NULL 03 00 电子自动化工程 4800
117 NULL 04 00 电子设备安装工程 4800
118 NULL 99 00 其他电子工程施工服务 4800
119 NULL 02 智能化安装工程施工服务
120 NULL 01 00 楼宇设备自控系统工程 4800
121 NULL 02 00 保安监控及防盗报警系统工程 4800
122 NULL 03 00 智能卡系统工程 4800
123 NULL 04 00 通讯系统工程 4800
124 NULL 05 00 卫星及共用电视系统工程 4800
125 NULL 06 00 计算机网络系统工程 4800
126 NULL 07 00 广播系统工程 4800
127 NULL 08 00 火灾报警系统工程 4800
128 NULL 99 00 其他智能化安装工程施工服务 4800
129 NULL 03 机电设备及大型设备安装工程
130 NULL 01 00 机电设备安装 4800
131 NULL 02 00 起重设备安装工程 4800
132 NULL 03 00 电梯安装工程 4800
133 NULL 99 00 其他大型设备安装服务 4800
134 NULL 04 电力系统安装服务 4800
135 NULL 01 00 建筑物照明设备安装服务
136 NULL 02 00 火车站电力系统安装服务 4800
137 NULL 03 00 机场电力系统安装服务 4800
138 NULL 04 00 港口电力系统安装服务 4800
139 NULL 05 00 工矿企业电力系统安装服务 4800
140 NULL 99 00 其他电力系统安装服务 4800
141 NULL 05 建筑物管道系统安装活动
142 NULL 01 00 建筑物自来水系统安装活动 4800
143 NULL 02 00 建筑物排水系统安装活动 4800
144 NULL 03 00 建筑物燃气系统安装 4800
145 NULL 04 00 建筑物取暖系统安装 4800
146 NULL 99 00 其他建筑物系统安装 4800
147 NULL 99 其他设备安装活动
148 NULL 01 00 绝缘装活动置安装活动 4800
149 NULL 99 00 其他未列明的设备安装活动 4800
150 NULL 04 建筑装饰业
151 NULL 01 室内装修装饰活动
152 NULL 01 00 木工装修装饰活动 4900
153 NULL 02 00 砌筑装修装饰活动 4900
154 NULL 03 00 抹灰装修装饰活动 4900
155 NULL 04 00 石制装修装饰活动 4900
156 NULL 05 00 油漆装修装饰活动 4900
157 NULL 99 00 其他室内装修装饰活动 4900
158 NULL 02 室内设施维修活动
159 NULL 01 00 室内电力系统维修活动 4900
160 NULL 02 00 室内上水系统维修活动 4900
161 NULL 03 00 室内排水系统维修活动 4900
162 NULL 04 00 室内取暖系统维修活动 4900
163 NULL 05 00 室内门窗维修活动 4900
164 NULL 99 00 其他室内设施维修活动 4900
165 NULL 03 00 00 室外建筑装修装饰活动 4900
166 NULL 05 工程准备
167 NULL 01 00 00 土石方工程 5010
168 NULL 02 00 00 爆破与拆除工程 5010
169 NULL 03 00 00 工程排水活动 5010
170 NULL 99 00 00 其他工程准备活动 5010
171 NULL 06 提供施工设备服务
172 NULL 01 00 00 建筑塔吊设备服务 5020
173 NULL 02 00 00 建筑混凝土设备服务 5020
174 NULL 99 00 00 其他施工设备服务 5020
175 NULL 99 其他未列明的建筑活动
176 NULL 01 00 00 工程放声、防尘设施安装活动 5090
177 NULL 02 00 00 建筑围栏装卸活动 5090
178 NULL 99 00 00 其他未包括的建筑活动 5090
179 NULL 50 建筑业产品 按建筑物的用途划分。此部分主要与联合国《产品总分类》(CPC)对应。
180 NULL 01 房屋建筑物
181 NULL 01 住宅房屋 该类指专供居住用的房屋。包括别墅、公寓、各部门的职工家属宿舍和集体宿舍(包括职工单身宿舍和学生宿舍)等供房屋。不包括住宅楼中作为人防工程用的房屋,也不包括不住人的地下室。
182 NULL 01 普通住宅房屋
183 NULL 01 单层民宅 4710
184 NULL 02 多层民宅(六层以下) 4710
185 NULL 03 高层民宅 4710
186 NULL 99 其他普通住宅房屋 4710
187 NULL 02 公寓住宅房屋 4710
188 NULL 03 别墅式住宅房屋 4710
189 NULL 01 连体别墅住宅
190 NULL 02 独幢别墅住宅 4710
191 NULL 99 其他别墅式住宅房屋 4710
192 NULL 99 00 其他住宅房屋 4710
193 NULL 02 商业及服务用房屋
194 NULL 01 商品销售用房屋 该类指批发和零售企业对外营业的各种批发市场、超级市场、商店、门市部、粮店、书店、供销店等房屋。不包括批发零售企业的厂房和仓库。
195 NULL 01 百货商场房屋 4710
196 NULL 02 超级市场房屋 4710
197 NULL 03 书店房屋 4710
198 NULL 04 音像商店房屋 4710
199 NULL 05 便利店房屋 4710
200 NULL 06 综合商厦房屋 4710
2 1 47 01 房屋工程建筑
3 2 47 01 01 住宅及公共房屋建筑工程服务
4 3 47 01 01 01 00 住宅及公共房屋建筑地基与基础工程服务 4710
5 3 47 01 01 02 00 住宅及公共房屋建筑砖石工程服务 4710
6 3 47 01 01 03 00 住宅及公共房屋建筑起重设备工程服务 4710
7 3 47 01 01 04 00 住宅及公共房屋建筑混凝土预制构件工程服务 4710
8 3 47 01 01 05 00 住宅及公共房屋建筑钢结构工程服务 4710
9 3 47 01 01 06 00 住宅及公共房屋建筑预应力工程服务 4710
10 3 47 01 01 07 00 住宅及公共房屋建筑幕墙工程服务 4710
11 3 47 01 01 08 00 住宅及公共房屋建筑防水工程服务 4710
12 3 47 01 01 09 00 住宅及公共房屋建筑附着升降脚手架服务 4710
13 3 47 01 01 10 00 住宅及公共房屋金属门窗工程服务 4710
14 3 47 01 01 99 00 住宅及公共房屋建筑其他工程服务 4710
15 2 47 01 02 工矿房屋建筑工程服务
16 15 47 01 02 01 00 工矿房屋建筑地基与基础工程服务 4710
17 15 47 01 02 02 00 工矿房屋建筑砖石工程服务 4710现在主要是填充问题,只要填充了,我就可以用表2转换的代码改一改来转换表1这是表2用来转换的代码
SELECT GBID AS ID,
F5_ AS Name,
CASE
WHEN f2_ = '''' THEN
0
ELSE
(SELECT TOP 1 GBID
FROM (SELECT GBID, f = f1_ + f2_ + f3_ + f4_
FROM GB_T4754_2002
WHERE f1_ = a.f1_
AND f2_ IN (a.f2_, '''')
AND f3_ IN (a.f3_, '''')
AND f4_ IN (a.f4_, '''')
AND GBID <> a.GBID) b
ORDER BY f DESC)
END AS ParentID
FROM dbo.GB_T4754_2002 AS a
因为是这种分类结构不适合程序调用,所以主要目的是加两列ID和ParentID来明确他们的父子关系
insert @a select
'单位一'union all select
NULL union all select
NULL union all select
NULL union all select
NULL union all select
'单位二' union all select
NULL union all select
NULL union all select
NULL union all select
'单位三' union all select
NULL union all select
NULL union all select
NULLDECLARE @N VARCHAR(40)
SET @N='单位一'UPDATE @a
set col_oo1=@n,@n=case when col_oo1 is null then @n else col_oo1 end select * from @a
不过你的分类太多了!
DECLARE @N VARCHAR(4000)
SET @N=''UPDATE 产品分类目录_下 set F1=@n,@n=case when F1 = '' then @n else F1 endUPDATE 产品分类目录_下 set F2=@n,@n=case when F2 = '' then @n else F2 end
where not(f2='' and f3='' and f4='' and f5='')UPDATE 产品分类目录_下 set F3=@n,@n=case when F3 = '' then @n else F3 end
where not(f3='' and f4='' and f5='')UPDATE 产品分类目录_下 set F4=@n,@n=case when F4 = '' then @n else F4 end
where not(f4='' and f5='')转树形:
SELECT ID,
CASE
WHEN f2 = '' THEN
0
ELSE
(SELECT TOP 1 ID
FROM (SELECT ID, f = f1 + f2 + f3 + f4 + f5
FROM 产品分类目录_下
WHERE f1 = a.f1
AND f2 IN (a.f2, '')
AND f3 IN (a.f3, '')
AND f4 IN (a.f4, '')
AND f5 IN (a.f5, '')
AND ID <> a.ID) b
ORDER BY f DESC)
END AS ParentID,Name
FROM 产品分类目录_下 AS a