两个表的部分字段写入另一个表

表A ,a1,a2 字段 表B b1,b2 字段,其中,a1= b1

要写入另一个表(C)或者临时表,a1,b1字段相同,需要合并这样的报表需求,我们可以这么写:

首先把A表需要数据查出来写入 C表,c1,c2字段,然后再更新c3字段

存储过程:其中 A表是 T_ECert B表是 T_ECert2013 C表是临时表

CREATE PROCEDURE SP_RP_EcertReport1  --create by ChangChun for 统计全区从业人员总数

[email protected] varchar(1)

AS

BEGIN

SET NOCOUNT ON;

IF 1=0 BEGIN

SET FMTONLY OFF

END

CREATE TABLE #TMP (机构名称 varchar(100),旧版从业人员数量 INTEGER,新版从业人员数量 INTEGER);

DECLARE @organ VARCHAR(100),@ecertNum INTEGER,@ecert2013Num INTEGER;

DECLARE C1 CURSOR FOR  SELECT DISTINCT SUBSTRING(convert(varchar(100),ziparea),1,4) FROM dbo.TB_Organ

OPEN C1

FETCH NEXT  FROM C1 INTO @organ

WHILE @@fetch_status = 0

BEGIN

--先插入

INSERT INTO #TMP SELECT substring(convert(varchar(100),ziparea),1,4) as 区域编                             码 ,count(*),0 as 旧版版从业证数量 from T_ECert

WHERE ECERTSTATE = ‘从业‘ and substring(convert(varchar(100),ziparea),1,4) = @organ

GROUP by substring(convert(varchar(100),ziparea),1,4) order by 区域编码;

--根据C表 更新 C3字段

UPDATE a SET a.新版从业人员数量 = b.新版从业证数量

FROM #TMP AS a,(SELECT  substring(convert(varchar(100),ziparea),1,4) as 区域编                              码 ,count(*) as 新版从业证数量 from T_ECert2013

WHERE ECERTSTATE = ‘从业‘ and substring(convert(varchar(100),ziparea),1,4) = @organ

GROUP by substring(convert(varchar(100),ziparea),1,4) ) AS b

WHERE a.机构名称 = b.区域编码

FETCH NEXT  FROM C1 INTO @organ

END

CLOSE C1

DEALLOCATE C1

SELECT * FROM #TMP

END

时间: 2024-11-03 22:30:10

两个表的部分字段写入另一个表的相关文章

如何使用MySQL一个表中的字段更新另一个表中字段

这篇文章主要介绍了如何使用MySQL一个表中的字段更新另一个表中字段,需要的朋友可以参考下 1,修改1列 ? 1 2 3 update student s, city c set s.city_name = c.name where s.city_code = c.code; 2,修改多个列 ? 1 2 3 update a, b set a.title=b.title, a.name=b.name where a.id=b.id ?子查询 ? 1 update student s set ci

SQL两表之间:根据一个表的字段更新另一个表的字段

1. 写法轻松,更新效率高: update table1 set field1=table2.field1, field2=table2.field2 from table2 where table1.id=table2.id 2. 常规方式,种写法相当于一个 Left join, 以外面的where为更新条数,如果不加where就是所有记录 update table1 set field1=(select top 1 field1 from table2 where table2.id=tab

查询Oracle 数据库中带有lob字段的某一个表的大小

注意:由于lob字段有独立的lob segment来存储,故对于带有lob字段的表,不能仅仅查询dba_segments. 以下脚本来自: How to Compute the Size of a Table containing Outline CLOBs and BLOBs[Article ID 118531.1] 经过修改:改为了NVL(SUM(S.BYTES),0) SQL> col "TOTAL TABLE SIZE" format 99999999999999 ---

mysql中把一个表的数据批量导入另一个表中(不同情况)

mysql中把一个表的数据批量导入另一个表中 不管是在网站开发还是在应用程序开发中,我们经常会碰到需要将MySQL某个表的数据批量导入到另一个表的情况,甚至有时还需要指定导入字段. 本文就将以MySQL数据库为例,介绍如何通过SQL命令行将某个表的所有数据或指定字段的数据,导入到目标表 中. 类别一. 如果两张张表(导出表和目标表)的字段一致,并且希望插入全部数据,可以用这种方法:(此方法只适合导出两表在同一database) INSERT INTO 目标表 SELECT * FROM 来源表;

MySql中把一个表的数据插入到另一个表中的实现代码--转

MySql中把一个表的数据插入到另一个表中的实现代码 司的一个项目,做报表--要关联的表结构比较多,最后决定把要用的数据集合到一张新表中,需要用到以下的sql语法......分享下: web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码.下面我以mysql数据库为例分情况一一说明: 1.如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: ?

oracle从各个表取得数据保存到另一个表

从各个表中取得数据保存另一个表中: CREATE VIEW PARAMETER_view ASWITH tall AS ( SELECT p.PI_NO,--产品序列号 p.SERIALNO,--产品编号 p.PI_NAME,--产品名称 p. PI_START_DATE,--产品起息日 p.PI_END_DATE,--产品期日期 p.PI_CUSTOMER_YIELD/100 PI_CUSTOMER_YIELD, --产品收益率 a.AI_NO, --资产序列号 a.CAS_ASSETS_NA

union 时只能查出一个表中的信息,另一个表只能查出字段

原因:news表中title字段的编码,与brand表中的编码不一致导致 y 原文地址:https://www.cnblogs.com/lxwphp/p/8329241.html

mysql更新一个表里的字段等于另一个表某字段的值

update a left join c on a.id = c.id set a.body = c.c1 where a.id=c.id;update zcat as z left join zcat_bak_1212 as zb on z.zcatId = zb.zcatId set z.zcatName = zb.zcatName where z.zcatName is null; 我用到的如下 update z_vnetid__money a left join tab_feeaccou

将一个数据表的数据复制到另一个表

1 声名表a,b 2 --b表存在(两表结构一样)insert into b select * from a 3 若两表只是有部分(字段)相同,则 4 insert into b(col1,col2,col3,col4,...) select col1,col2,col3,col4,... from a where... 5 把表a插入到表b中去. 6 --b表不存在select * into b from a 7 8 select (字段1,字段2,...) into b from a