表A
字段  名称          类型       排序
ID     strName         bType      strOrder 
1       AA              0           AA 
2       BB              1           AABB
3       CC              1           AABBCC
......以上是一个BOM结构,请问该如何按 strOrder 将 bType 进行更新呢?预想结果如下:ID     strName         bType                strOrder 
1       AA              0                    AA 
2       BB              0(对应上一层AA)       AABB
3       CC              0(对应上一层BB)       AABBCC

解决方案 »

  1.   


    create table #ta (ID int,strName varchar(10),bType int,strOrder varchar(50))
    insert into #ta select 1,'aa',0,'aa'
    insert into #ta select 2,'bb',1,'aabb'
    insert into #ta select 3,'cc',1,'aabbcc'update #ta
    set bType=c
    from (select bType as c from #ta where strName=left(right(strOrder,4),2)) tselect * from #ta drop table #ta
    --resurlt
    ID          strName    bType       strOrder
    ----------- ---------- ----------- --------------------------------------------------
    1           aa         0           aa
    2           bb         0           aabb
    3           cc         0           aabbcc
      

  2.   


    --条件按你真实数据的规则写
    where strName=left(right(strOrder,4),2)
      

  3.   

    可否不用strName來进行判断呢?因為数据可能如下ID          strName    bType       strOrder
    ----------- ---------- ----------- --------------------------------------------------
    1           冬瓜         0           aa
    2           豆腐         0           aabb
    3           西瓜         0           aabbcc
      

  4.   

    数据也可能如下,较复杂。ID        strName   intC(层)    bType      strOrder 
    ----------- ---------- ----------- -------------------------------------------------- 
    1          电脑         1             0          aa 
    2          LCD         2           0          aa1 
    2          主机         2            1          aa2 
    3          CPU         3            0         aa21 
    4          主板         3             0         aa22此时的结果就如下了。当主层bType为1时,子层数据跟住主层变。ID        strName   intC(层)    bType      strOrder 
    ----------- ---------- ----------- -------------------------------------------------- 
    1          电脑         1           0          aa 
    2          LCD        2           0          aa1 
    2          主机         2           1         aa2 
    3          CPU        3           1         aa21 (子层跟住上一层变) 
    4          主板        3            1         aa22(子层跟住上一层变) 
      

  5.   

    那就换成ID或intc
    全看你strOrder的设计是怎样的
      

  6.   

    我觉得表的结构设计不好,按这样设计都不象BOM结构的设计一个BOM不能简单的用一个语句完成,一般情况下用存储过程完成
      

  7.   

    谢谢大家,其实像以上的数据源,是用SQL语句加临表生成的。