请求一条生成合计值的Update语句?
DM(代码) BT(标题) JB(级别)SJDM(上级代码) PF(得分)
00000001 1 测试仪技术性能指标 1 NULL ?
00000005 1.1 仪表品牌 2 00000001 1
00000023 1.2 显示屏及界面要求 2 00000001 2
00000024 1.3 文件存储 2 00000001 1
00000025 1.4 测试结果转储 2 00000001 2
00000026 1.5 电池 2 00000001 1
00000027 1.6 E1测试功能 2 00000001 ?
00000028 1.6.1 E1帧格式 3 00000027 2
00000029 1.6.2 E1时钟 3 00000027 1
00000030 1.6.3 E1测试图案 3 00000027 0.5
00000033 1.7 数据测试功能 2 00000001 ?
00000034 1.7.1 接口 3 00000033 1
00000035 1.7.2 接口速率 3 00000033 1.5
00000036 1.7.3 数据通讯 3 00000033 1
00000037 1.7.4 数据监视 3 00000033 2
00000002 2 数据误码测试仪技术其它 1 NULL ?
00000006 2.1 质量保证期 2 00000002 1
00000007 2.2 质量保证期后的维护 2 00000002 1
00000008 2.3 投标文件的完整性、 2 00000002 1
00000009 2.4 其他技术偏差 2 00000002 1
根据上述的表结构,要求写一条update语句更新小计值,如标题为1,1.6,1.7, 2的合计项,其合计分(PF)是根据本身下一级的合计值计算得出后直接填入。
------解决方案--------------------update t1 set PF = (selecct sum(PF) from tablename where sjdm = t1.dm)
from tablename t1
where PF = '? ' --这里是筛选你需要更新数据的列
------解决方案--------------------他的子應該是不止一層的。
另外,樓主,你的原始數據是怎樣的?是不是只有最底層的字節點的PF才有值?
------解决方案--------------------update 表
set PF=(select sum(isnull(a.PF,0)) from 表 a where left(a.BT,charindex( '. ',a.BT)-1)=表.BT)
from 表
where len(BT)-len(replace(表.BT, '. ', ' '))=1
如果找最上级where charindex( '. ',表.BT)=0