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

从各个表中取得数据保存另一个表中:

CREATE VIEW
PARAMETER_view AS
WITH
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,--资产的名称
a.DONO,--资产的编码
a.CAS_ISSUE_SUM,--资产发行金额
a.CAS_YIELD_RATE/100 CAS_YIELD_RATE, --资产收益率
a.CAS_VALUE_DATE , --资产起息日
a.CAS_DUE_DATE , --资产到期日期
NVL(FeeNum,0) FeeNum,--其他费用
NVL(FeeRate,0) FeeRate,--其他费率
NVL(fmfee,0) fmfee, --累计浮动管理费
NVL( fmfee3/100,0) fmfee3, --浮动管理费
NVL(ct.FEERATIO/100,0) FEERATIO, --产品的托管费
NVL( cg.cgrate/100,0) cgrate , --产品的管理费
NVL( atrate/100,0) atrate,--资产的托管费
NVL( agrate/100,0) agrate ,--资产的管理费
NVL( cgrates/100,0) cgrates ,--产品的投顾费
NVL( agrates/100,0) agrates ,--资产的投顾费
gl_date, --交易日期
floor(SYSDATE-to_date(PI_START_DATE,‘yyyy-mm-dd hh24:mi:ss‘)) pflday,--产品累加天数
floor(SYSDATE-to_date(CAS_VALUE_DATE,‘yyyy-mm-dd hh24:mi:ss‘)) aflday--资产累加天数
FROM
GL_PRODUCTASSETS g
LEFT JOIN
Product_info p
ON
g.PBS_MAINPRO_NO=p.PI_NO
LEFT JOIN
ASSETS_INFO a
ON
g.CAS_ASSETS_NU=a.AI_NO
LEFT JOIN
(
SELECT
productid,
SUM(FMFEE) fmfee
FROM
PRODUCT_FMFEE
GROUP BY
productid ) f
ON
g.PBS_MAINPRO_NO=f.PRODUCTID
LEFT JOIN
(
SELECT
FEERATIO fmfee3,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
FEETYPE=‘浮动管理费‘ ) f2
ON
p.PI_NO=f2.FEEOBJECTNO
LEFT JOIN
(
SELECT
*
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Product‘
AND FEETYPE=‘托管费‘) ct
ON
p.PI_NO=ct.FEEOBJECTNO
LEFT JOIN
(
SELECT
sum( FEERATIO) cgrate ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Product‘
AND FEETYPE=‘管理费‘ group by FEEOBJECTNO ) cg
ON
p.PI_NO=cg.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO cgrates ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Product‘
AND FEETYPE=‘投顾费‘) cgg
ON
p.PI_NO=cgg.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO atrate ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Asset‘
AND FEETYPE=‘托管费‘) att
ON
a.AI_NO=att.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO agrate ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Asset‘
AND FEETYPE=‘管理费‘) ag
ON
a.AI_NO=ag.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO agrates ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Asset‘
AND FEETYPE=‘投顾费‘) agg
ON
a.AI_NO=agg.FEEOBJECTNO
LEFT JOIN
(
SELECT

SUM( FEERATIO ) FeeNum,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Product‘
AND FEETYPE NOT IN (‘托管费‘,
‘投顾费‘,
‘管理费‘,
‘浮动管理费‘)
AND FEERATIO>1
GROUP BY
FEEOBJECTNO
) fs
ON
a.AI_NO=fs.FEEOBJECTNO

LEFT JOIN
(
SELECT

SUM( FEERATIO ) FeeRate,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Product‘
AND FEETYPE NOT IN (‘托管费‘,
‘投顾费‘,
‘管理费‘,
‘浮动管理费‘)
AND FEERATIO<1
GROUP BY
FEEOBJECTNO
) fss
ON
a.AI_NO=fss.FEEOBJECTNO

WHERE
G.GL_STATE=1
)
SELECT
ta.*,
(a_day_receive+p_day_manage+p_day_tm+p_day_tes-p_day_receive-a_day_manage-a_day_tm-a_day_tes+
fmfee3+FeeNum) all_get 
FROM
(
SELECT
PI_NO,
PI_NAME,
PI_CUSTOMER_YIELD*CAS_ISSUE_SUM/365 p_day_receive, --产品编号,产品名称,产品每日收益
PI_CUSTOMER_YIELD*CAS_ISSUE_SUM/365*pflday p_all_receive, --起息日到当天的累计
cgrate*CAS_ISSUE_SUM/365 p_day_manage, --产品当天管理费
cgrate*CAS_ISSUE_SUM/365*pflday p_all_manage, --产品累计管理费
FEERATIO*CAS_ISSUE_SUM/365 p_day_tm, --产品当天托管费
FEERATIO*CAS_ISSUE_SUM/365*pflday p_all_tm, --产品累计托管费
CAS_ASSETS_NA,CAS_YIELD_RATE*CAS_ISSUE_SUM/365 a_day_receive, --资产编号,资产名称,资产每日收益
CAS_YIELD_RATE*CAS_ISSUE_SUM/365*aflday a_all_receieve, --资产起息日到当天的累计
agrate*CAS_ISSUE_SUM/365 a_day_manage, --资产当天管理费
agrate*CAS_ISSUE_SUM/365*aflday a_all_manage, --产品累计管理费
atrate*CAS_ISSUE_SUM/365 a_day_tm, --资产当天托管费
atrate*CAS_ISSUE_SUM/365*aflday a_all_tm, --资产累计托管费
‘0‘ tdfee,
‘0‘ tdallfee,
fmfee3,
cgrates*CAS_ISSUE_SUM/365 p_day_tes,--产品当天投顾费
cgrates*CAS_ISSUE_SUM/365*pflday p_all_tes,--产品累计投顾费
agrates*CAS_ISSUE_SUM/365 a_day_tes,--资产当天投顾费
agrates*CAS_ISSUE_SUM/365*aflday a_all_tes, --资产累计投顾费
FeeNum --其他费用
FROM
tall) ta ;

SELECT
DECODE(gl_date,a.CAS_VALUE_DATE, p.PI_NO , p.PI_NAME )
FROM
GL_PRODUCTASSETS g
LEFT JOIN
Product_info p
ON
g.PBS_MAINPRO_NO=p.PI_NO
LEFT JOIN
ASSETS_INFO a
ON
g.CAS_ASSETS_NU=a.AI_NO
LEFT JOIN
(
SELECT
productid,
SUM(FMFEE) fmfee
FROM
PRODUCT_FMFEE
GROUP BY
productid ) f
ON
g.PBS_MAINPRO_NO=f.PRODUCTID
LEFT JOIN
(
SELECT
productid,
SUM(FMFEE) fmfee3
FROM
PRODUCT_FMFEE
WHERE
INPUTDATE = TO_CHAR(SYSDATE,‘YYYY/MM/DD‘)
GROUP BY
productid) f2
ON
g.PBS_MAINPRO_NO=f2.PRODUCTID
LEFT JOIN
(
SELECT
*
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Product‘
AND FEETYPE=‘托管费‘) ct
ON
p.PI_NO=ct.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO cgrate ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Product‘
AND FEETYPE=‘管理费‘) cg
ON
p.PI_NO=cg.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO cgrates ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Product‘
AND FEETYPE=‘投顾费‘) cgg
ON
p.PI_NO=cg.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO atrate ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Asset‘
AND FEETYPE=‘托管费‘) att
ON
a.AI_NO=att.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO agrate ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Asset‘
AND FEETYPE=‘管理费‘) ag
ON
a.AI_NO=ag.FEEOBJECTNO
LEFT JOIN
(
SELECT
FEERATIO agrates ,
FEEOBJECTNO
FROM
PRODUCT_COST_INFO
WHERE
feeobjecttype=‘Asset‘
AND FEETYPE=‘投顾费‘) agg
ON
a.AI_NO=ag.FEEOBJECTNO
WHERE
G.GL_STATE=1

然后把这个视图数据保存到你要保存的表:

insert into (和视图的列要对应的列名)表A(select *  from 视图表)

时间: 2024-11-13 04:47:38

oracle从各个表取得数据保存到另一个表的相关文章

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

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

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

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

Oracle查询一个表的数据插入到另一个表

1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: insert into tab1 select * from tab2; 3.同一个表中,将A字段的指赋给B字段: update table_name set B =  A; 4. 将一个表的字段数据插入到另一个表的字段数据中 insert into XTHAME.tab1(pk_bdversion,vbdco

sqlite expert导入excel表格 (包括使用问题、以及把 一个表的数据插入到另一个表中)

一.sqlite导入excel 1.打开要导入的excel --- 另存为(2007版点击左上角OFFICE图标即可找到) --- 保存类型:CSV类型 (提示什么不兼容什么的,一律点确定.) 2.打开sqlite expert ,选择建好的数据库文件(或者是导入的已存在的db文件,或者是自己新建一个.db数据库文件). 右击文件名---选择最后一个import text file(CSV,TSV) 3.(如果没有建过和这个excel名相同的表)右边Destination选择第一项new tab

SQL实现将一个表的数据插入到另外一个表的代码

--第一种情况的 1>如果2张表的字段一致,并且希望插入全部数据,可以用这种方法: INSERT INTO 目标表 SELECT * FROM 来源表; 2>比如要将 articles 表插入到 newArticles 表中,则是: INSERT INTO newArticles SELECT * FROM articles; 3>如果只希望导入指定字段,可以用这种方法: INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2, ... FROM

SQL语句把一个表的数据复制到另外一个表里面

不同的数据库语法不同(SQL Server和Oracle为例),且复制包括目标表已存在和目标表不存在的情况 1.SQL Server中,如果目标表存在: insert into 目标表 select * from 原表; 2.SQL Server中,,如果目标表不存在: select * into 目标表 from 原表; 3.Oracle中,如果目标表存在: insert into 目标表 select * from 原表;   commit; 4.Oracle中,如果目标表不存在: crea

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

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

sql 判断一个表的数据不在另一个表中

--1 SELECT a.* FROM a LEFT JOIN b ON a.key = b.key WHERE (b.key IS NULL) --2 select *, case when (select count(*) from b where id = a.id)>0 then 1 else 0 end as flag from a --3 select id from (select a.id,b.conid from a left join b on a.id=b.conid) a

sql中一个表的数据插入到另一个表中sql语句怎么写?谢谢!

<p> 有了朋友,她不再感到孤独,不再觉得无,助,不再产生自残,她笑了,发自内心的真正的笑.她决定把心中的一切毫无保留地向他倾诉,她与他约好了时间. 但他太忙了,太忙了.于是,她在QQ上留言,在手机上短信,在她看来,这是她和他的秘密.但音讯全无,他没有无花果树,只结果不开花.无花果树长在丈母娘家的院子里.我们都吃过它的果子.后来拆迁,院子没了,无花果树就,成了回忆. 早晨妻弟打来电话,说让我们帮忙把住在小姨子家的丈母娘搬到他家去住,说妈现在年岁大了,身体也不好,要人照顾了.我听妻子告诉我这读书