经典union的使用
一个用户下广告位 某一天有收入和支出 有支出不一定有收入 有收入不一定有支出 下例为按用户查询 sanhao 下的信息
支出如下:
收入如下:
按天进行查询,例如查询:
得到结果如下:
使用一般的按日期左关联,会出现错误。
正确的使用如下,把每个表的收入或者支出补全 为0,然后union合并 再进行分组合并
select rownum rn,mm0.accesstime,nvl(mm1.inall,0) inall
,nvl(mm1.outall,0) outall,mm1.placeid
,decode(mm1.inall,null,0,mm1.inall)-decode(mm1.outall,null,0,mm1.outall) profit
,decode(inall,0,'-', to_char(round((decode(mm1.inall,null,0,mm1.inall)-decode(mm1.outall,null,0,mm1.outall) )/inall,4)*100)||'%') proRate
from
(
select column_value as accesstime from table(fn_split('2013-10-12,2013-10-13,2013-10-14',',') )
) mm0,
(
select accesstime,placeid,sum(inall) inall,sum(outall2) outall from
(
--包广告位付款
select 0 inall,to_char(rd.accounttime,'yyyy-mm-dd') as accesstime,rd.placeid ,decode(sum(rd.paysum),null,0,sum(rd.paysum)) outall2
from ad_paidrecord rd
inner join ad_place pl on rd.placeid=pl.placeid and pl.ismonthly=1
where rd.placeid!=0--包广告位
and pl.ismonthly=1
and rd.rectype in(0,2)
and rd.accounttime>= to_date('2013-10-12','yyyy-mm-dd')
and rd.accounttime<= to_date('2013-10-14','yyyy-mm-dd')--根据记账日期(小的日期)
--and (i_placeid=-1 or rd.placeid=i_placeid)
and (rd.webuserid='sanhao' )
group by rd.accounttime,rd.placeid
union
--总收入
select sum(v.income)inall,to_char(v.accesstime,'yyyy-mm-dd') as accesstime,v.placeid,0
from v_placeincome v
where v.accesstime >= to_date('2013-10-12','yyyy-mm-dd')
and v.accesstime <= to_date('2013-10-14','yyyy-mm-dd')
-- and (i_placeid=-1 or v.placeid=i_placeid)
and v.ismonthly=1
and (v.webuserid='sanhao')
group by accesstime,placeid
)
group by accesstime,placeid
) mm1
where mm0.accesstime=mm1.accesstime(+)
and (inall>0 or (nvl(mm1.outall,0))>0)
order by placeid,mm0.accesstime asc;
经典union的使用的更多相关文章
- SQL FOR JSON PATH 返回 json
--直接返回 age FOR JSON PATH --返回值 [{"name":"张学友","age":60}] select c1, c2 ...
- [转]从两道经典试题谈C/C++中联合体(union)的使用
宋宝华 21cnbao sweek@21cn.com 试题一:编写一段程序判断系统中的CPU是Little endian还是Big endian模式? 分析: 作为一个计算机相关专业的人,我们应该在计 ...
- [Swift]经典解题思路:联合查找Union Find
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤微信公众号:山青咏芝(shanqingyongzhi)➤博客园地址:山青咏芝(https://www.cnblogs. ...
- 经典SQL语句大全
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
- 【转载】经典SQL语句大全
[原文地址]http://www.cnblogs.com/yubinfeng/archive/2010/11/02/1867386.html 一.基础 1.说明:创建数据库CREATE DATABAS ...
- 让UNION与ORDER BY并存于SQL语句当中
在SQL语句中,UNION关键字多用来将并列的多组查询结果(表)合并成一个结果(表),简单实例如下: SELECT [Id],[Name],[Comment] FROM [Product1] UNIO ...
- HDU 5652 India and China Origins(经典并查集)
特别经典的一个题,还有一种方法就是二分+bfs 题意:空间内n*m个点,每个点是0或者1,0代表此点可以走,1代表不能走.接着经过q年,每年一个坐标表示此点不能走.问哪年开始图上不能出现最上边不能到达 ...
- POJ 1182 食物链 (经典带权并查集)
第三次复习了,最经典的并查集 题意:动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们 ...
- 20160411002 经典SQL语句大全
一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备 ...
随机推荐
- poj1563---蜗牛爬井
#include <stdio.h> #include <stdlib.h> int main() { int dayTh; float Udis,currentHeight, ...
- openstack 升级设计要求的指导原则
不知道其他软件有没有类似的指导原则. Theory of Upgrade Grenade works under the following theory of upgrade. New code s ...
- select option 下拉多选单选bootstrap插件使用总结
<select id="example-getting-started" multiple="multiple"> <option value ...
- Solrj日期范围查询
在做依据日期来检索的时候普通的格式化会出错,试了好多种仅仅有一种可行 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH ...
- 一个cocoapods问题的解决,希望能帮助到遇到相似情况的人
之前10.7的系统上执行过cocoapods没有问题.如今系统版本号升级到了10.9,尝试使用cocoapods遇到问题,报告了类似以下的错误: Psych::SyntaxError - (/User ...
- 1.padding和margin,几种参数
这篇会很短. 那么如上图所示,margin指的是外边距,padding指的是内边距,border自有其像素宽度,element在1335乘以392的地方. margin和padding一样总共有四个, ...
- 引入css ,使用@import和link的方式
我们也经常听到有人说要使用link来引入CSS更好,但是你知道为什么吗? 继续往下看 linklink就是把外部CSS与网页连接起来. @importimport文字上与link的区别就是它可以把在一 ...
- 查询离指定日期最近的一条数据(oracle)
select * from ( Select * from t_currency_rate where f_orig_curr='USD' and f_dest_curr='RMB ...
- poj1006---中国剩余定理
#include<iostream> using namespace std; int main(){ ; &&e!=-&&i!=-&&d! ...
- 解决jni链接时找不到函数的问题
用jni调用库函数时,经常会碰到link的错误,具体出错信息如下: 08-07 01:42:06.490: E/AndroidRuntime(1665): java.lang.UnsatisfiedL ...