以下是我写的存储过程create proc sp_he_bing
AS
-----------------------------------------------------
-----------------------------------------------------
--合并[不合格][未年检][证书超期][重名数据]四张表的操作
--
-----------------------------------------------------
-------------------------------------------------------@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-----------------------------------------------------
--步骤一,处理满足4条的记录
-----------------------------------------------------
--(1)将满足4个条件的记录插到t_sjzl_bhg_mx表中
-----------------------------------------------------
insert into t_sjzl_bhg_mx
(jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
select t_sjzl_tj_mx_temp_1.jgdm,t_sjzl_tj_mx_temp_1.jgmc,t_sjzl_tj_mx_temp_1.bzjgdm,t_sjzl_tj_mx_temp_1.bhgqksm+","+t_sjzl_tj_mx_temp_2.bhgqksm+","+t_sjzl_tj_mx_temp_3.bhgqksm+","+t_sjzl_tj_mx_temp_4.bhgqksm,t_sjzl_tj_mx_temp_1.tjrq
from t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
where t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_2.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_3.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_4.jgdm
--GO
-----------------------------------------------------
--(2)分别删除4张表中满足4个条件的记录
-----------------------------------------------------
-----<1>初始化机构代码jgdm矢量表t_jgdm_vector,用来保存
--      符合4个条件的jgdm值
-----------------------------------------------------
insert into t_jgdm_vector
select t_sjzl_tj_mx_temp_1.jgdm
from t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
where t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_2.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_3.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_4.jgdm
-----------------------------------------------------
-----<2>删除[1不合格]表中的记录
-----------------------------------------------------
delete 
from t_sjzl_tj_mx_temp_1
where t_sjzl_tj_mx_temp_1.jgdm in 
(
select jgdm
from t_jgdm_vector
)
--GO
-----------------------------------------------------
-----<3>删除[2未年检]表中的记录
-----------------------------------------------------
delete 
from t_sjzl_tj_mx_temp_2
where t_sjzl_tj_mx_temp_2.jgdm in 
(
select jgdm
from t_jgdm_vector)
--GO
-----------------------------------------------------
-----<4>删除[3证书超期]表中的记录
-----------------------------------------------------
delete 
from t_sjzl_tj_mx_temp_3
where t_sjzl_tj_mx_temp_3.jgdm in 
(
select jgdm
from t_jgdm_vector)
--GO
-----------------------------------------------------
-----<5>删除[4重名数据]表中的记录
-----------------------------------------------------
delete 
from t_sjzl_tj_mx_temp_4
where t_sjzl_tj_mx_temp_4.jgdm in 
(
select jgdm
from t_jgdm_vector
)
--GO
-----------------------------------------------------
----<6>清空t_jgdm_vector表,以备后用
-----------------------------------------------------
delete
from t_jgdm_vector
--GO
-------------------------------------------------------@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
-----------------------------------------------------
--步骤二,处理满足3条(3T)的记录
--       有4种情况
--       (3T1) [不合格][未年检][证书超期]  (123)
--       (3T2) [不合格][未年检][重名]      (124)
--       (3T3) [不合格][证书超期][重名]    (134)
--       (3T4) [未年检][证书超期][重名]    (234)
-----------------------------------------------------
--(1)将满足3T1条件的记录插到t_sjzl_bhg_mx表中(123)
-----------------------------------------------------
insert into t_sjzl_bhg_mx
(jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
select t_sjzl_tj_mx_temp_1.jgdm,t_sjzl_tj_mx_temp_1.jgmc,t_sjzl_tj_mx_temp_1.bzjgdm,t_sjzl_tj_mx_temp_1.bhgqksm+","+t_sjzl_tj_mx_temp_2.bhgqksm+","+t_sjzl_tj_mx_temp_3.bhgqksm,t_sjzl_tj_mx_temp_1.tjrq
from t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3 --(123)
where t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_2.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_3.jgdm
--GO
-----------------------------------------------------
--(2)分别删除3张表(123)中满足3T1条件的记录
-----------------------------------------------------
-----<1>初始化机构代码jgdm矢量表t_jgdm_vector,用来保存
--      符合3T1条件的jgdm值
-----------------------------------------------------
insert into t_jgdm_vector
select t_sjzl_tj_mx_temp_1.jgdm
from t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3
where t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_2.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_3.jgdm
-----------------------------------------------------
-----<2>删除[1不合格]表中的记录
-----------------------------------------------------
delete 
from t_sjzl_tj_mx_temp_1
where t_sjzl_tj_mx_temp_1.jgdm in 
(
select jgdm
from t_jgdm_vector
)
--GO
-----------------------------------------------------
-----<3>删除[2未年检]表中的记录
-----------------------------------------------------

解决方案 »

  1.   

    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥从此处开始,往下,程序执行得特别慢!但是在我的机器上就没有问题!!真奇怪!!
    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
    ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥delete 
    from t_sjzl_tj_mx_temp_2
    where t_sjzl_tj_mx_temp_2.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    -----<4>删除[3证书超期]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_3
    where t_sjzl_tj_mx_temp_3.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    ----<5>清空t_jgdm_vector表,以备后用
    -----------------------------------------------------
    delete
    from t_jgdm_vector
    --GO
    -----------------------------------------------------
    --(3)将满足3T2条件的记录插到t_sjzl_bhg_mx表中(124)
    -----------------------------------------------------
    insert into t_sjzl_bhg_mx
    (jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    select t_sjzl_tj_mx_temp_1.jgdm,t_sjzl_tj_mx_temp_1.jgmc,t_sjzl_tj_mx_temp_1.bzjgdm,t_sjzl_tj_mx_temp_1.bhgqksm+","+t_sjzl_tj_mx_temp_2.bhgqksm+","+t_sjzl_tj_mx_temp_4.bhgqksm,t_sjzl_tj_mx_temp_1.tjrq
    from t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_4 --(124)
    where t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_2.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_4.jgdm
    --GO
    -----------------------------------------------------
    --(4)分别删除3张表(124)中满足3T2条件的记录
    -----------------------------------------------------
    -----<1>初始化机构代码jgdm矢量表t_jgdm_vector,用来保存
    --      符合3T2条件的jgdm值
    -----------------------------------------------------
    insert into t_jgdm_vector
    select t_sjzl_tj_mx_temp_1.jgdm
    from t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_4
    where t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_2.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_4.jgdm
    -----------------------------------------------------
    -----<2>删除[1不合格]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_1
    where t_sjzl_tj_mx_temp_1.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    -----<3>删除[2未年检]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_2
    where t_sjzl_tj_mx_temp_2.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
      

  2.   

    -----------------------------------------------------
    -----<4>删除[4重名数据]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_4
    where t_sjzl_tj_mx_temp_4.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    ----<5>清空t_jgdm_vector表,以备后用
    -----------------------------------------------------
    delete
    from t_jgdm_vector
    --GO
    -----------------------------------------------------
    --(5)将满足3T3条件的记录插到t_sjzl_bhg_mx表中(134)
    -----------------------------------------------------
    insert into t_sjzl_bhg_mx
    (jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    select t_sjzl_tj_mx_temp_1.jgdm,t_sjzl_tj_mx_temp_1.jgmc,t_sjzl_tj_mx_temp_1.bzjgdm,t_sjzl_tj_mx_temp_1.bhgqksm+","+t_sjzl_tj_mx_temp_3.bhgqksm+","+t_sjzl_tj_mx_temp_4.bhgqksm,t_sjzl_tj_mx_temp_1.tjrq
    from t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4 --(134)
    where t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_3.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_4.jgdm
    --GO
    -----------------------------------------------------
    --(6)分别删除3张表(134)中满足3T3条件的记录
    -----------------------------------------------------
    -----<1>初始化机构代码jgdm矢量表t_jgdm_vector,用来保存
    --      符合3T3条件的jgdm值
    -----------------------------------------------------
    insert into t_jgdm_vector
    select t_sjzl_tj_mx_temp_1.jgdm
    from t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
    where t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_3.jgdm and t_sjzl_tj_mx_temp_1.jgdm = t_sjzl_tj_mx_temp_4.jgdm
    -----------------------------------------------------
    -----<2>删除[1不合格]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_1
    where t_sjzl_tj_mx_temp_1.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    -----<3>删除[3证书超期]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_3
    where t_sjzl_tj_mx_temp_3.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    -----<4>删除[4重名数据]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_4
    where t_sjzl_tj_mx_temp_4.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    ----<5>清空t_jgdm_vector表,以备后用
    -----------------------------------------------------
    delete
    from t_jgdm_vector
    --GO
    -----------------------------------------------------
    --(7)将满足3T4条件的记录插到t_sjzl_bhg_mx表中(234)
    -----------------------------------------------------
    insert into t_sjzl_bhg_mx
    (jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    select t_sjzl_tj_mx_temp_2.jgdm,t_sjzl_tj_mx_temp_2.jgmc,t_sjzl_tj_mx_temp_2.bzjgdm,t_sjzl_tj_mx_temp_2.bhgqksm+","+t_sjzl_tj_mx_temp_3.bhgqksm+","+t_sjzl_tj_mx_temp_4.bhgqksm,t_sjzl_tj_mx_temp_2.tjrq
    from t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4 --(234)
    where t_sjzl_tj_mx_temp_2.jgdm = t_sjzl_tj_mx_temp_3.jgdm and t_sjzl_tj_mx_temp_2.jgdm = t_sjzl_tj_mx_temp_4.jgdm
    --GO
    -----------------------------------------------------
    --(8)分别删除3张表(234)中满足3T4条件的记录
    -----------------------------------------------------
    -----<1>初始化机构代码jgdm矢量表t_jgdm_vector,用来保存
    --      符合3T4条件的jgdm值
    -----------------------------------------------------
    insert into t_jgdm_vector
    select t_sjzl_tj_mx_temp_2.jgdm
    from t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
    where t_sjzl_tj_mx_temp_2.jgdm = t_sjzl_tj_mx_temp_3.jgdm and t_sjzl_tj_mx_temp_2.jgdm = t_sjzl_tj_mx_temp_4.jgdm
    -----------------------------------------------------
    -----<2>删除[2未年检]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_2
    where t_sjzl_tj_mx_temp_2.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    -----<3>删除[3证书超期]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_3
    where t_sjzl_tj_mx_temp_3.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    -----<4>删除[4重名数据]表中的记录
    -----------------------------------------------------
    delete 
    from t_sjzl_tj_mx_temp_4
    where t_sjzl_tj_mx_temp_4.jgdm in 
    (
    select jgdm
    from t_jgdm_vector
    )
    --GO
    -----------------------------------------------------
    ----<5>清空t_jgdm_vector表,以备后用
    -----------------------------------------------------
    delete
    from t_jgdm_vector
    --GO
      

  3.   

    create function f_1(@jgdm varchar(32))
    returns varchar(50)
    as
    begin
    declare @str varchar(3000)
    set @str=''
    select @str=@str+','+cast(price as varchar(20)) from test where prodid=@jgdm
    return right(@str,len(@str)-1)
    end
    goselect jgdm,jgmc,bzjgdm,bhgqksm,tjrq into #test from (
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_1
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_2
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_3
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_4)bgo
    insert into t_sjzl_bhg_mx(jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    select jgdm,min(jgmc),min(bzjgdm),dbo.f_1(jgdm) as 'jgdm',min(tjrq) from test group by jgdm
    godrop table #t,t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
    go
      

  4.   

    /*先建立临时表test*/
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq into test from (
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_1
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_2
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_3
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_4)b
    go
    /*建 立函数f_1*/
    create function f_1(@jgdm varchar(32))
    returns varchar(50)
    as
    begin
    declare @str varchar(3000)
    set @str=''
    select @str=@str+','+cast(price as varchar(20)) from test where prodid=@jgdm
    return right(@str,len(@str)-1)
    end
    go/*把test表里数据通过函数全部导入到t_sjzl_bhg_mx表里*/
    insert into t_sjzl_bhg_mx(jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    select jgdm,min(jgmc),min(bzjgdm),dbo.f_1(jgdm) as 'jgdm',min(tjrq) from test group by jgdm
    go
    /*完成任务,删除临时表,及原四个表*/
    drop table test,t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
    go
      

  5.   

    谢谢你!但是,SQL Server 7 好像不支持用户自定义函数!怎么办???
      

  6.   

    也就是说,有没有不用用户自定义函数能解决将
    field1   field2
    1        string1
    1        string2
    合并为
    field1   field2
    1        string1,string2的方法?
      

  7.   

    SQL 7真得没有函数功能吗?如不用函数,有sql语句是很难实现的。建议你升级吧。
      

  8.   

    下面用游标方法也可以实现,但效果没有函数好,速度会慢 。
    /*先建立临时表test*/
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq into test from (
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_1
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_2
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_3
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_4)b
    godeclare @str varchar(8000),@jgdm varchar(32)
    declare cur cursor for 
    select jgdm from test group by jgdm
    open cur
    fetch next from cur into @fld1
    while @@fetch_status=0
    begin
    set @str=''
    select @str=@str+cast(price as varchar(20)) from test where jgdm=@jgdm
    insert into t_sjzl_bhg_mx(jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    select top 1 jgdm,jgmc,bzjgdm,@str as 'jgdm',tjrq from test where jgdm=@jgdm
    fetch next from cur into @fld1
    end
    close cur
    deallocate curgo
    /*完成任务,删除临时表,及原四个表*/
    drop table test,t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
    go
      

  9.   

    --下面用游标方法也可以实现,但效果没有函数好,速度会慢 。
    /*先建立临时表test*/
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq into test from (
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_1
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_2
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_3
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_4)b
    go/*通过游 标一条一条的插入*/
    declare @str varchar(8000),@jgdm varchar(32)
    declare cur cursor for 
    select jgdm from test group by jgdm
    open cur
    fetch next from cur into @jgdm
    while @@fetch_status=0
    begin
    set @str=''
    select @str=@str+cast(price as varchar(20)) from test where jgdm=@jgdm
    insert into t_sjzl_bhg_mx(jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    select top 1 jgdm,jgmc,bzjgdm,@str as 'jgdm',tjrq from test where jgdm=@jgdm
    fetch next from cur into @jgdm
    end
    close cur
    deallocate curgo
    /*完成任务,删除临时表,及原四个表*/
    drop table test,t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
    go
      

  10.   

    select @str=@str+cast(price as varchar(20)) from test where jgdm=@jgdm
    insert into t_sjzl_bhg_mx(jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    有问题!Server: Msg 207, Level 16, State 3, Line 9
    Invalid column name 'price'.
    Server: Msg 207, Level 16, State 1, Line 10
    Invalid column name 'jgdm'.
    Server: Msg 207, Level 16, State 1, Line 10
    Invalid column name 'jgmc'.
    Server: Msg 207, Level 16, State 1, Line 10
    Invalid column name 'bzjgdm'.
    Server: Msg 207, Level 16, State 1, Line 10
    Invalid column name 'tjrq'.
    Server: Msg 207, Level 16, State 1, Line 10
    Invalid column name 'jgdm'.
      

  11.   

    上面的错误是字段名不存在,你把上面几个表的建表SQL语句贴出来,我来调试。
      

  12.   

    --下面用游标方法也可以实现,但效果没有函数好,速度会慢 。
    /*先建立临时表test*/
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq into test from (
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_1
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_2
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_3
    union all
    select jgdm,jgmc,bzjgdm,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_4)b
    go/*通过游 标一条一条的插入*/
    declare @str varchar(8000),@jgdm varchar(32)
    declare cur cursor for 
    select jgdm from test group by jgdm
    open cur
    fetch next from cur into @jgdm
    while @@fetch_status=0
    begin
    set @str=''
    select @str=@str+','+bhgqksm  from test where jgdm=@jgdm
    set @str=right(@str,len(@str)-1)
    insert into t_sjzl_bhg_mx(jgdm,jgmc,bzjgdm,bhgqksm,tjrq)
    select top 1 jgdm,jgmc,bzjgdm,@str as 'bhgqksm',tjrq from test where jgdm=@jgdm
    fetch next from cur into @jgdm
    end
    close cur
    deallocate curgo
    /*完成任务,删除临时表,及原四个表*/
    drop table test,t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
    gocreate table t_sjzl_tj_mx_temp_1(
      

  13.   


    --下面用游标方法也可以实现,但效果没有函数好,速度会慢 。
    --生成测试环境
    create table t_sjzl_tj_mx_temp_1(jgdm varchar(10),jgmc varchar(10),bhgqksm varchar(10),tjrq datetime )
    create table t_sjzl_tj_mx_temp_2(jgdm varchar(10),jgmc varchar(10),bhgqksm varchar(10),tjrq datetime )
    create table t_sjzl_tj_mx_temp_3(jgdm varchar(10),jgmc varchar(10),bhgqksm varchar(10),tjrq datetime )
    create table t_sjzl_tj_mx_temp_4(jgdm varchar(10),jgmc varchar(10),bhgqksm varchar(10),tjrq datetime )
    create table t_sjzl_bhg_mx(jgdm varchar(10),jgmc varchar(10),bhgqksm varchar(1000),tjrq datetime )
    goinsert into t_sjzl_tj_mx_temp_1
    select '1','a','aa1','2005-9-1' union all
    select '2','b','bb1','2005-9-1' union all
    select '3','c','cc1','2005-9-1' union all
    select '4','d','dd1','2005-9-1' union all
    select '5','e','ee1','2005-9-1' union all
    select '6','f','ff1','2005-9-1'
    go
    insert into t_sjzl_tj_mx_temp_2
    select '1','a','aa2','2005-9-1' union all
    select '2','b','bb2','2005-9-1' union all
    select '3','c','cc2','2005-9-1' union all
    select '4','d','dd2','2005-9-1' union all
    select '5','e','ee2','2005-9-1'
    go
    insert into t_sjzl_tj_mx_temp_3
    select '1','a','aa3','2005-9-1' union all
    select '2','b','bb3','2005-9-1' union all
    select '3','c','cc3','2005-9-1' union all
    select '5','e','ee3','2005-9-1'
    go
    insert into t_sjzl_tj_mx_temp_4
    select '3','c','cc4','2005-9-1'
    go/*先建立临时表test*/
    select jgdm,jgmc,bhgqksm,tjrq into test from (
    select jgdm,jgmc,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_1
    union all
    select jgdm,jgmc,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_2
    union all
    select jgdm,jgmc,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_3
    union all
    select jgdm,jgmc,bhgqksm,tjrq  from t_sjzl_tj_mx_temp_4)b
    go/*通过游 标一条一条的插入*/
    declare @str varchar(8000),@jgdm varchar(32)
    declare cur cursor for 
    select jgdm from test group by jgdm
    open cur
    fetch next from cur into @jgdm
    while @@fetch_status=0
    begin
    set @str=''
    select @str=@str+','+bhgqksm  from test where jgdm=@jgdm
    set @str=right(@str,len(@str)-1)
    insert into t_sjzl_bhg_mx(jgdm,jgmc,bhgqksm,tjrq)
    select top 1 jgdm,jgmc,@str as 'bhgqksm',tjrq from test where jgdm=@jgdm
    fetch next from cur into @jgdm
    end
    close cur
    deallocate cur
    go
    --测试
    select * from t_sjzl_bhg_mx
    /*
    jgdm       jgmc       bhgqksm tjrq
    ---------- ---------- --------------------------
    1 a aa1,aa2,aa3 2005-09-01 00:00:00.000
    2 b bb1,bb2,bb3 2005-09-01 00:00:00.000
    3 c cc1,cc2,cc3,cc4 2005-09-01 00:00:00.000
    4 d dd1,dd2 2005-09-01 00:00:00.000
    5 e ee1,ee2,ee3 2005-09-01 00:00:00.000
    6 f ff1 2005-09-01 00:00:00.000*/
    /*完成任务,删除临时表,及原四个表*/
    drop table test,t_sjzl_tj_mx_temp_1,t_sjzl_tj_mx_temp_2,t_sjzl_tj_mx_temp_3,t_sjzl_tj_mx_temp_4
    go