*********************************************************************************
其中select ywlm,sz from bd_sbsxbjg where cjbh='' and xxflbh=''一句可以查询到
fuzaisunhao  jiexianzubie  zongzhong三个字段名以及对应的值即返回结果如下:fuzaisunhao   12
jiexianzubie  24
zongzhong     36
**********************************************************************************
上面的应该只能查到两个值吧。
楼主用下面的语句试试。注意修改???的地方。
insert into SB_XHXQ_BJ_XDJ1_300_10(sbbh,fuzaisunhao,jiexianzubie,zongzhong)
select sbbh,ywlm,sz,???
from SB_XHXQ_XDJ1_300_10 a,bd_sbsxbjg b
where b.cjbh='106D96D26DCcb13C60CB' and b.xxflbh='106D96C39BDca1C72349'

解决方案 »

  1.   

    多谢楼上的回答
    bd_sbsxbjg表的结构是这样的:
    cjbh xxflbh   ywlm          sz    <---列名
    ...  ...      fuzaisunhao   12
    ...  ...      jiexianzubie  24
    ...  ..       zongzhong     36 
    因为fuzaisunhao  jiexianzubie  zongzhong三个值又是另外一张表的字段名,所以我才这样说的,抱歉不知道是否能说明这个问题select ywlm,sz from bd_sbsxbjg where cjbh='' and xxflbh=''一句可以查询到
    fuzaisunhao  jiexianzubie  zongzhong三个字段名以及对应的值即返回结果如下:
    fuzaisunhao   12
    jiexianzubie  24
    zongzhong     36下面是我在存储过程中又加上去的一些内容,但有语法错误
    declare @curS varchar(20),@tStr varchar(1000),@vStr varchar(1000)
    set @tStr = 'insert into SB_XHXQ_BJ_XDJ1_300_10(sbbh,'
    set @vStr = ') values('
    declare curSbbh cursor for select sbbh from SB_XHXQ_XDJ1_300_10
    open curSbbh
    fetch curSbbh into @curS
    while @@FETCH_STATUS = 0
    begin 
     --给新表插入值
       @vStr +=  ''+@curS+''--这里语法有错,目的是相当于追加字符串而已
       declare @ywlm varchar(100),@sz varchar(1000)
       declare curYwlmSz cursor for select ywlm,sz from bd_sbsxbjg where cjbh='' and xxflbh=''
       open curYwlmSz
       fetch next from curYwlmSz into @ywlm,@sz
       while @@FETCH_STATUS =0
       begin
        --组织insert语句并赋值
        @tStr +=''+@ywlm+''--这里语法有错
        @vStr +=  ''+@sz+''   --这里语法有错
        fetch next from curYwlmSz into @ywlm,@sz
       end
       exec(@tStr +''+vStr+')')
       close curYwlmSz
       deallocate curYwlmSz
     fetch next from curSbbh into @curS
    end
    close curSbbh
    deallocate curSbbh
    GO
      

  2.   

    --生成测试数据
    create table SB_XHXQ_XDJ1_300_10(sbbh varchar(50),edingdianya int)
    insert into SB_XHXQ_XDJ1_300_10 select '106ECBF4047161827AB2',10
    insert into SB_XHXQ_XDJ1_300_10 select '106ECBFC8FF1713728DD',10create table bd_sbsxbjg(cjbh varchar(20),xxflbh varchar(20),ywlm  varchar(20),sz int)
    insert into bd_sbsxbjg select '106D96D26DCcb13C60CB','106D96C39BDca1C72349',rtrim('fuzaisunhao '),12
    insert into bd_sbsxbjg select '106D96D26DCcb13C60CB','106D96C39BDca1C72349',rtrim('jiexianzubie'),24
    insert into bd_sbsxbjg select '106D96D26DCcb13C60CB','106D96C39BDca1C72349',rtrim('zongzhong   '),36create table SB_XHXQ_BJ_XDJ1_300_10(sbbh varchar(50),fuzaisunhao varchar(50),jiexianzubie varchar(50),zongzhong varchar(50))
    --执行处理过程
    declare @curS varchar(20),@s1 varchar(8000),@s2 varchar(8000)declare curSbbh cursor for 
    select sbbh from SB_XHXQ_XDJ1_300_10open curSbbh
    fetch next from curSbbh into @curSwhile @@FETCH_STATUS = 0
    begin 
       set @s1=''
       set @s2=''
       select 
           @s1=@s1+','+ywlm,
           @s2=@s2+','+rtrim(sz)
       from
           bd_sbsxbjg 
       where 
           cjbh='106D96D26DCcb13C60CB' and xxflbh='106D96C39BDca1C72349'
       
       set @s1='insert into SB_XHXQ_BJ_XDJ1_300_10(sbbh'+@s1+') values('''+@curS+''''+@s2+')'
       
       print @s1
       exec(@s1)
       
       fetch next from curSbbh into @curS
    end
    close curSbbh
    deallocate curSbbh--查看执行结果
    select * from SB_XHXQ_BJ_XDJ1_300_10
    /*
    sbbh                    fuzaisunhao    jiexianzubie   zongzhong   
    ----------------------  -------------  -------------  ----------- 
    106ECBF4047161827AB2    12             24             36
    106ECBFC8FF1713728DD    12             24             36
    */--删除测试环境
    drop table SB_XHXQ_BJ_XDJ1_300_10,bd_sbsxbjg,SB_XHXQ_XDJ1_300_10
      

  3.   

    非常感谢 libin_ftsafe(子陌红尘)的回复 
    正是我要解决的问题  由于对存储过程的语法不是很熟悉所以常犯错误
    我还担心问题说不清楚呢 真的很感激你的多次帮助