紧急求助数据相减的SQL!!!!
时间:2011-09-23
来源:互联网
where f1.data_dt=t.date_key
select sum(f1.CREDIT_AMT) from B f1,D t
where f1.data_dt=t.date_key
我现在想通过一条SQL获得这2个值得差值请高人们指点......
作者: toss3000 发布时间: 2011-09-23
SQL code
select (select sum(f1.TAKEUP_CREDIT_AMT) from A f1,D t where f1.data_dt=t.date_key )- (select sum(f1.CREDIT_AMT) from B f1,D t where f1.data_dt=t.date_key) 差值 from dual
作者: cuihaiyang 发布时间: 2011-09-23
SELECT SUM(f1.TAKEUP_CREDIT_AMT)-SUM(f1.CREDIT_AMT) FROM A f1,B f2,D t WHERE t.date_key=f1.data_dt(+) AND t.date_key=f2.data_dt(+)
作者: cosio 发布时间: 2011-09-23
-- 两种方法:其结果应该一样!(因为你是用的内连接:where f1.data_dt=t.date_key) -- 方法一:每条记录的两个字段相减,然后累加!(即:先相减,再累加) select sum(f1.TAKEUP_CREDIT_AMT-f1.CREDIT_AMT) as sum1 from A f1,D t where f1.data_dt=t.date_key; -- 方法二:先对两个字段分别求和,再相减!(即:先累加,再相减) select sum(f1.TAKEUP_CREDIT_AMT)-sum(f1.CREDIT_AMT) as sum2 from A f1,D t where f1.data_dt=t.date_key;
作者: luoyoumou 发布时间: 2011-09-23
SQL code
-- 两种方法:其结果应该一样!(因为你是用的内连接:where f1.data_dt=t.date_key)
-- 方法一:每条记录的两个字段相减,然后累加!(即:先相减,再累加)
select sum(f1.TAKEUP_CREDIT_AMT-f1.CREDIT_AMT) as sum1
from A f1,D t
where f1.data_dt=t.date_ke……
-- 至于效率怎么样,需要看一下执行计划!
作者: luoyoumou 发布时间: 2011-09-23
引用 3 楼 luoyoumou 的回复:
SQL code
-- 两种方法:其结果应该一样!(因为你是用的内连接:where f1.data_dt=t.date_key)
-- 方法一:每条记录的两个字段相减,然后累加!(即:先相减,再累加)
select sum(f1.TAKEUP_CREDIT_AMT-f1.CREDIT_AMT) as sum1
from A f1,D t……
表不一样!一个是A,一个是B
作者: cosio 发布时间: 2011-09-23
--连接查询和之差 where f1.data_dt=t.date_key slect sum(f1.TAKEUP_CREDIT_AMT)-sum(f2.CREDIT_AMT) from A f1 left join D t on f1.data_dt=t.data_key left join B f2 on f2.data_dt=t.data-key
作者: lzd_83 发布时间: 2011-09-23
引用 4 楼 luoyoumou 的回复:
引用 3 楼 luoyoumou 的回复:
SQL code
-- 两种方法:其结果应该一样!(因为你是用的内连接:where f1.data_dt=t.date_key)
-- 方法一:每条记录的两个字段相减,然后累加!(即:先相减,再累加)
select sum(f1.TAKEUP_CREDIT_AMT-f1.CREDIT_AMT……
SQL code
-- 那可以用中间表D 作为主表,A、B表分别 left join D with c as (select d.date_key, nvl(a.TAKEUP_CREDIT_AMT,0) as TAKEUP_CREDIT_AMT, nvl(b.CREDIT_AMT,0) as CREDIT_AMT from d left join a on a.date_dt=d.date_key left join b on b.date_dt=d.date_key ) select sum(c.TAKEUP_CREDIT_AMT-c.CREDIT_AMT) as sum1 from c; with c as (select d.date_key, nvl(a.TAKEUP_CREDIT_AMT,0) as TAKEUP_CREDIT_AMT, nvl(b.CREDIT_AMT,0) as CREDIT_AMT from d left join a on a.date_dt=d.date_key left join b on b.date_dt=d.date_key ) select sum(c.TAKEUP_CREDIT_AMT)-sum(c.CREDIT_AMT) as sum2 from c;
作者: luoyoumou 发布时间: 2011-09-23
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28