对exists用法的祥述
来源:互联网 发布:怎样删除kingroot软件 编辑:程序博客网 时间:2024/06/09 13:38
表的说明:oe_order_header_all订单头信息表
字段说明:header_id订单头的编号,主键
org_id公司编号,
order_date下单时间,
sold_to_org_id客户(customer)的编号,
booked_flag是否已经确认要下该订单的标志列
cancelled_flag是否取消的标志列(*取消则该客户就不是我的客户了)
查询功能:查看2014 ISH Q1新客户数据,新客户的定义为:周期内(1/1~3/31)之前未成交,期间有成交的记录的新客户数据
分析及思路:1.org_id=287
2.在2014年1月1号之前没有成交
3.周期内(2014年1月1日—2014年3月31日)有成交
首先在oe_order_headers_all表中找到周期内有成交且公司编号为287的记录(记录一),然后再在oe_order_headers_all表中找到在周期之前成交且公司编号为287的记录(记录二),最后通过sold_to_org_id的比对(将记录已中的sold_to_org_id传入记录而中)从记录一中去掉记录二中存在的。
SELECT ooha1.sold_to_org_id,ooha1.ordered_date
FROM oe_order_headers_all ooha1
WHERE ooha1.ordered_dateBETWEEN to_date('2014-01-01','yyyy-mm-dd')AND to_date('2014-03-31','yyyy-mm-dd')+0.9999
AND ooha1.org_id=287
ANDNOTexists(SELECT *
FROM oe_order_headers_all ooha2
WHERE ooha2.sold_to_org_id = ooha1.sold_to_org_id
AND ooha2.ordered_date <to_date('2014-01-01','yyyy-mm-dd')
AND ooha2.org_id =287
AND ooha2.cancelled_flag ='N'
AND ooha2.booked_flag ='Y'
);
图解分析:
假设oe_order_headers_all表的结构和数据如下:
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
首先找出order_date在周期内且org_id为287的记录,如下图,粉红色底纹的是满足条件的:
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
然后找出order_date在周期之前且org_id为287的记录,如下图,淡蓝色底纹的是满足条件的:
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
最后比对两个记录中Sold_to_org_id栏位的值
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
可以看出第一条粉红记录中sold_to_org_id栏位中的值为3,在淡蓝记录中sold_to_org_id栏位中的值为3和5,可以比对出3不是新客户
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
可以看出第一条粉红记录中sold_to_org_id栏位中的值为4,在淡蓝记录中sold_to_org_id栏位中的值为3和5,可以比对出3和5中不包含4,因此sold_to_org_id为4的客户是新客户
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
Head_id
Org_id
Order_date
Sold_to_org_id
1
227
2014-1-3
1
2
227
2014-1-2
2
3
287
2014-2-1
3
4
287
2014-2-5
3
5
227
2014-3-7
3
6
287
2014-12-3
3
7
287
2014-3-2
4
8
287
2014-12-5
5
9
227
2014-2-13
5
可以看出第一条粉红记录中sold_to_org_id栏位中的值为4,在淡蓝记录中sold_to_org_id栏位中的值为3和5,可以比对出3和5中不包含4,因此sold_to_org_id为4的客户是新客户
- 对exists用法的祥述
- exists,not exists的用法
- exists,not exists的用法
- exists的一种用法
- exists的用法
- SQL EXISTS的用法
- exists 的用法
- EXISTS的用法
- mysql exists的用法
- not exists 的用法
- 数据库 EXISTS的用法
- exists的用法
- exists/not exists的用法和原理
- sql中exists,not exists的用法
- sql中exists,not exists的用法
- sql中exists,not exists的用法
- sql中exists,not exists的用法
- sql中exists,not exists的用法
- App列表之圆角ListView
- qsort函数、sort函数 (精心整理篇)
- eclipse配置总结
- [html] 关于overflow 的用法
- 蕾丝欧美连衣裙
- 对exists用法的祥述
- 弹出框固定定位
- java各种配置
- Model-View-Controller(mvc)
- Cocos2d-x物理引擎世界的使用
- 项目中用到的一些第三方库
- css字体中 中文字体的英文表示法
- unity模型动画资源相关
- POJ-2976-Dropping tests