视图sql如下,业务如此,不得已而建之,因为报表:
CREATE OR REPLACE VIEW 日度处理_集气站产量 AS
SELECT DISTINCT
(
SELECT distinct 日期 from 数据采集_采气井
where 日期=CQJ.日期
) as 日期,
CQJ.单位代码 单位代码,
SUNIT.UNIT_RELATION 队名,
CQJ.单位名称 站别,
(
SELECT SUM(日产气) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 日产气量,
(
SELECT SUM(日产水) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 日产水量,
(
SELECT SUM(日产油) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 凝析油日产量,
(
select 日外输气量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日外输气量,
(
select 日自用气量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日自用气量,
(
select 日损耗气量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日损耗气量,
(
select 凝析油销售量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日凝析油销售量,
(
select 甲醇库存量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日甲醇库存量,
(
SELECT SUM(站内注醇量+管线注醇量+套注注醇量) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 日耗甲醇量,
(
SELECT SUM(日产气)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累产气量,
(
SELECT SUM(日产水)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累产水量,
(
SELECT SUM(日产油)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 凝析油月累产量,
(
SELECT SUM(日外输气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累外输气量,
(
SELECT SUM(日自用气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累自用气量,
(
SELECT SUM(日损耗气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累损耗气量,
(
SELECT SUM(凝析油销售量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月凝析油销售量,
(
SELECT SUM(甲醇库存量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月甲醇库存量,
(
SELECT SUM(站内注醇量+管线注醇量+套注注醇量)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月耗甲醇量,
(
SELECT SUM(日产气)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累产气量,
(
SELECT SUM(日产水)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累产水量,
(
SELECT SUM(日产油)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 凝析油年累产量,
(
SELECT SUM(日外输气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累外输气量,
(
SELECT SUM(日自用气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累自用气量,
(
SELECT SUM(日损耗气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累损耗气量,
(
SELECT SUM(凝析油销售量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年凝析油销售量,
(
SELECT SUM(甲醇库存量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年甲醇库存量,
(
SELECT SUM(站内注醇量+管线注醇量+套注注醇量)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年耗甲醇量,
(
SELECT SUM(日产气)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
)
AS 历史累计产气量,
(
SELECT SUM(日产水)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
)
AS 历史累计产水量,
(
SELECT SUM(日产油)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
)
AS 凝析油历史累计产量,
(
SELECT SUM(日外输气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计外输气量,
(
SELECT SUM(日自用气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计自用气量,
(
SELECT SUM(日损耗气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计损耗气量,
(
SELECT SUM(凝析油销售量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计凝析油销售量,
(
SELECT SUM(甲醇库存量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计甲醇库存量,
(
SELECT SUM(站内注醇量+管线注醇量+套注注醇量)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
)
AS 历史累计耗甲醇量
FROM 数据采集_采气井 CQJ,数据采集_集气站 JQZ,SYS_UNIT SUNIT
WHERE CQJ.单位代码 = SUNIT.UNIT_ID
CREATE OR REPLACE VIEW 日度处理_集气站产量 AS
SELECT DISTINCT
(
SELECT distinct 日期 from 数据采集_采气井
where 日期=CQJ.日期
) as 日期,
CQJ.单位代码 单位代码,
SUNIT.UNIT_RELATION 队名,
CQJ.单位名称 站别,
(
SELECT SUM(日产气) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 日产气量,
(
SELECT SUM(日产水) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 日产水量,
(
SELECT SUM(日产油) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 凝析油日产量,
(
select 日外输气量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日外输气量,
(
select 日自用气量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日自用气量,
(
select 日损耗气量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日损耗气量,
(
select 凝析油销售量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日凝析油销售量,
(
select 甲醇库存量 from 数据采集_集气站
where 日期=CQJ.日期
and 单位名称=CQJ.单位名称
)
AS 日甲醇库存量,
(
SELECT SUM(站内注醇量+管线注醇量+套注注醇量) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 日耗甲醇量,
(
SELECT SUM(日产气)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累产气量,
(
SELECT SUM(日产水)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累产水量,
(
SELECT SUM(日产油)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 凝析油月累产量,
(
SELECT SUM(日外输气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累外输气量,
(
SELECT SUM(日自用气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累自用气量,
(
SELECT SUM(日损耗气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累损耗气量,
(
SELECT SUM(凝析油销售量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月凝析油销售量,
(
SELECT SUM(甲醇库存量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月甲醇库存量,
(
SELECT SUM(站内注醇量+管线注醇量+套注注醇量)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月耗甲醇量,
(
SELECT SUM(日产气)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累产气量,
(
SELECT SUM(日产水)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累产水量,
(
SELECT SUM(日产油)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 凝析油年累产量,
(
SELECT SUM(日外输气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累外输气量,
(
SELECT SUM(日自用气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累自用气量,
(
SELECT SUM(日损耗气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年累损耗气量,
(
SELECT SUM(凝析油销售量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年凝析油销售量,
(
SELECT SUM(甲醇库存量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年甲醇库存量,
(
SELECT SUM(站内注醇量+管线注醇量+套注注醇量)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,4)=SUBSTR(CQJ.日期,1,4)
)
AS 年耗甲醇量,
(
SELECT SUM(日产气)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
)
AS 历史累计产气量,
(
SELECT SUM(日产水)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
)
AS 历史累计产水量,
(
SELECT SUM(日产油)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
)
AS 凝析油历史累计产量,
(
SELECT SUM(日外输气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计外输气量,
(
SELECT SUM(日自用气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计自用气量,
(
SELECT SUM(日损耗气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计损耗气量,
(
SELECT SUM(凝析油销售量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计凝析油销售量,
(
SELECT SUM(甲醇库存量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
)
AS 历史累计甲醇库存量,
(
SELECT SUM(站内注醇量+管线注醇量+套注注醇量)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
)
AS 历史累计耗甲醇量
FROM 数据采集_采气井 CQJ,数据采集_集气站 JQZ,SYS_UNIT SUNIT
WHERE CQJ.单位代码 = SUNIT.UNIT_ID
解决方案 »
- 没有扩展名的文件是ORECLE数据库的全部数据吗?
- 用游标输出,看看错在哪?
- 有谁了解或熟悉Oracle的HTB平台?
- 求解,怎样将.shp(shapefile)地图文件导入oracle数据库,非常感谢!
- oracle 创建了用户怎么在方案里面没有对应的呢?哪位高手帮忙解决一下。
- 请高手帮忙纠错
- 请问视图问题
- 我和同事合写的<SQL Studio数据库集成管理工具>,使程序员免受SQL Plus之苦,需要的发E-mail给我 [email protected]
- 各位ORACLE高手,难道ORACLE连这样的SQL语句都不支持吗?!!
- ORACLE 日期格式問題
- Pl/sql问题 急
- 数据库效率问题
你这样写能快就怪了,
你把大量查询放在Select字段,每个SQL都要走无数个SQL。
我刚才简单数了一下,你获取一行记录要走36个SQL,这样肯定快不了。建议更换写法,把所有表放在From然后使用Where进行关联,也许能快点,
这样写效率超差。对于重复的统计表可以使用With子句。
不明白,再联络。
查询主要慢在了第一行的DISTINCT 上
CREATE OR REPLACE VIEW 日度处理_集气站产量 AS
SELECT
(
SELECT SUM(日产气) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 日产气量
FROM 数据采集_采气井 CQJ,数据采集_集气站 JQZ,SYS_UNIT SUNIT
WHERE CQJ.单位代码 = SUNIT.UNIT_ID
s varchar2(1000);
begin
s:='CREATE OR REPLACE VIEW 日度处理_集气站产量 AS
s:=s||'SELECT '
........
execute immediate s;
end;ddl语句可以用动态SQL另外,做这种报表建议在客户端处理,逐步取得各个值,也好对性能瓶颈进行定位.
CREATE OR REPLACE VIEW 日度处理_集气站产量 AS
SELECT
(
SELECT SUM(日产气) FROM 数据采集_采气井
WHERE 日期 = CQJ.日期
AND 单位名称 = CQJ.单位名称
)
AS 日产气量
FROM 数据采集_采气井 CQJ,数据采集_集气站 JQZ,SYS_UNIT SUNIT
WHERE CQJ.单位代码 = SUNIT.UNIT_ID
两天了,希望高人给优化一下
本人简化一下,优化下面sql
SELECT DISTINCT
(
SELECT distinct 日期 from 数据采集_采气井
where 日期=CQJ.日期
) as 日期,
CQJ.单位代码 单位代码,
SUNIT.UNIT_RELATION 队名,
CQJ.单位名称 站别,
(
SELECT SUM(日产气)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期 <=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累产气量,
(
SELECT SUM(日产水)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期 <=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累产水量FROM 数据采集_采气井 CQJ,数据采集_集气站 JQZ,SYS_UNIT SUNIT
WHERE CQJ.单位代码 = SUNIT.UNIT_ID
想优化SQL必须指导几个问题:【数据采集_采气井 CQJ】和【数据采集_集气站 JQZ】
必须使用笛卡尔乘积吗?好奇怪【数据采集_采气井.日期】是什么形式?
2008-03-01?这句SQL的目的是什么【 SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7) 】?你的SQL存在结构的问题,所以需要调整结构才可以,
我需要知道你SQL的目的,回答后给你结果。
必须使用笛卡尔乘积吗?非必须【数据采集_采气井.日期】是什么形式?
2008-03-01? 对这句SQL的目的是什么【 SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7) 】?
目的是取到月份最终实现:
序号 日期 站别 月累产气量 月累产水量
1 2008-02-01 集气10号站 213907 15.36
2 2008-02-02 集气10号站 433706 30.67
3 2008-02-03 集气10号站 650868 42.82
4 2008-02-04 集气10号站 868005 54.96
5 2008-02-05 集气10号站 1083374 71.52
6 2008-02-06 集气10号站 1296878 88.25
7 2008-02-07 集气10号站 1511161 101.69
8 2008-02-08 集气10号站 1724332 117.5
9 2008-02-09 集气10号站 1941708 131.39
10 2008-02-10 集气10号站 2158742 146.83
说的话很温暖 :)
开会的时候还想这个问题,
我原来也做过这样的程序,计算某种数据的变化率,
要解决这个问题应该从设计层面去解决,你在统计【月累产气量】变化的时候应该把合计放在前端去处理,
也就是Java或是docNet侧,SQL处理起来相当费时,我早期也是用SQL
去处理的,后期也是为了速度该成了前端处理,或者是在PL/SQL内处理,
建议变化一下思想,我也在版本管理器中,去给你找找我原来写的那个,
基本的我记得,使用With子句先统计出【日别】信息,然后使用分析函数
【lag】模拟创建树形结构,然后在使用【conntion by】进行连接,再统计,
绕了一大圈。
希望给你帮助。
http://www.orafaq.com/forum/t/70111/0/
(
SELECT distinct 日期 from 数据采集_采气井
where 日期=CQJ.日期
) as 日期,
CQJ.单位代码 单位代码,
SUNIT.UNIT_RELATION 队名,
CQJ.单位名称 站别,
(
SELECT SUM(日产气)
FROM 数据采集_采气井 CTable
WHERE CTable.单位名称 = CQJ.单位名称
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累产气量,
(
SELECT SUM(日外输气量)
FROM 数据采集_集气站 CTable
WHERE CTable.单位代码 = CQJ.单位代码
AND CTable.日期<=CQJ.日期
AND SUBSTR(CTable.日期,1,7)=SUBSTR(CQJ.日期,1,7)
)
AS 月累外输气量
FROM 数据采集_采气井 CQJ,数据采集_集气站 JQZ,SYS_UNIT SUNIT
WHERE CQJ.单位代码 = SUNIT.UNIT_ID