以下是我写的存储过程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未年检]表中的记录
-----------------------------------------------------
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未年检]表中的记录
-----------------------------------------------------
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥从此处开始,往下,程序执行得特别慢!但是在我的机器上就没有问题!!真奇怪!!
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥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
-----<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
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
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
field1 field2
1 string1
1 string2
合并为
field1 field2
1 string1,string2的方法?
/*先建立临时表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
/*先建立临时表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
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'.
/*先建立临时表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(
--下面用游标方法也可以实现,但效果没有函数好,速度会慢 。
--生成测试环境
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