一个查询语句

_小黑_ 2018-05-15 09:05:27

select sys_guid() as "key",
ent.entrust_name,
ent.bill_no,
ent.goods_type_name_cn,
ent.describe_goods,
ent.load_port,
ent.destination_port,
bk.zx_vessel_name,
bk.zx_voyage,
bk.zx_voyage_id,
bk.zx_vessel_id,
harbor.eta_date,
ent.total_weight,
ent.booking_req,
'' as "linkman",
'' as "remark",
(count(case cntr.cntr_type_code
when '20GP' then
cntr.cntr_type_code
end)) as "20GP",
(count(case cntr.cntr_type_code
when '20RF' then
cntr.cntr_type_code
end)) as "20RF",
(count(case cntr.cntr_type_code
when '20OT' then
cntr.cntr_type_code
end)) as "20OT",
(count(case cntr.cntr_type_code
when '40GP' then
cntr.cntr_type_code
end)) as "40GP",
(count(case cntr.cntr_type_code
when '40HC' then
cntr.cntr_type_code
end)) as "40HC",
(count(case cntr.cntr_type_code
when '40HR' then
cntr.cntr_type_code
end)) as "40HR"
from t_shp_entrust_cntr cntr
inner join t_shp_entrust ent on cntr.entrust_id = ent.entrust_id
inner join t_shp_booking bk on bk.entrust_id = ent.entrust_id
inner join (select t.eta_date, t.voy_id
from t_shp_voyage_harbor t
where t.port_code = 'CNDLC'
order by t.harbor_order) harbor on harbor.voy_id =
bk.zx_voyage_id
where cntr.entrust_id in ('16A36A4F317046029EFB61A892E21757',
'9F307E7AC4044F669F79C86BB4613B66'
)
group by cntr.cntr_type_code,
cntr.entrust_id,
ent.entrust_name,
ent.bill_no,
ent.goods_type_name_cn,
ent.describe_goods,
ent.load_port,
ent.destination_port,
bk.zx_vessel_name,
bk.zx_voyage,
bk.zx_voyage_id,
bk.zx_vessel_id,
harbor.eta_date,
ent.total_weight,
ent.booking_req
order by bk.zx_vessel_name

以上sql 由于t_shp_voyage_harbor表中 eta_date 但是这个表中 有多条 port_code 为CNDLC的数据 导致 查询出很多条重复的数据 我只想要 harbor_order 最小 并且 port_code 为CNDLC的数据
求大神 帮忙解决一下 谢谢
...全文
1017 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaiger 2018-05-29
  • 打赏
  • 举报
回复
应该不难,利用ORACLE的分析函数ROW_NUMBER。 比如把 select t.eta_date, t.voy_id from t_shp_voyage_harbor t where t.port_code = 'CNDLC' order by t.harbor_order 改成 select * from ( select t.eta_date, t.voy_id, row_number() over(partition by port_code order by eta_date desc) as rn from t_shp_voyage_harbor t where t.port_code = 'CNDLC') where rn = 1. 具体写法自己参考一下吧,没仔细看逻辑,太累
alex259 2018-05-28
  • 打赏
  • 举报
回复
count()over()了解一下 然后用row_number()over 取出计数,然后取计数等于1的结果 就能获得你要的结果了 貌似楼主是在做化工产品运输的统计
vv9128_41 2018-05-24
  • 打赏
  • 举报
回复
对这不怎么精通,刚接触不到两年,安装数据库没什么问题,但对于这些知道的不是很多。
_小黑_ 2018-05-15
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
楼主把问题简化一下,与当前问题无关的表,全部去掉; 给出表结构,测试数据,和你的预期结果,方便大家回复你。

根据 相同的 船名航次 汇总出  20GP    20RF    20OT    40GP    40HC    40HR 
列的合计
求大神 帮帮忙
_小黑_ 2018-05-15
  • 打赏
  • 举报
回复
引用 1 楼 wmxcn2000 的回复:
楼主把问题简化一下,与当前问题无关的表,全部去掉; 给出表结构,测试数据,和你的预期结果,方便大家回复你。

   	订舱代理	ZX_VOYAGE_ID	ENTRUST_ID	提单号	装货港	20GP	20RF	20OT	40GP	40HC	40HR	品名	货物描述	目的港	支线船名航次	ETA_DATE	毛重	联系人	订舱要求	备注
	地中海航运有限公司	832F53E35A8B4B1CBDF14D412B566E9D	4E9B22D76DDD4E1681568EC5AAFBB7C1	177QJFJFD82086T	QINHUANGDAO	1	0	0	0	0	0	镀膜深灰玻		ARICA	HONG TAI 28 0870	2018/5/14 8:00	26000			
	秦皇岛集港船舶代理有限公司	832F53E35A8B4B1CBDF14D412B566E9D	52DF79119ACB46CD89CC24941D015FF0	578116319	QINHUANGDAO	4	0	0	0	0	0	浮法深灰玻		GUAYAQUIL	HONG TAI 28 0870	2018/5/14 8:00	106000			
	total					5														
																				
	法国达飞轮船(中国)有限公司	DFE8DD387FF9432197A45CA8D6BA998E	53C6F807F17A416A8F698B6B1DA48279	XDQV900453	QINHUANGDAO	6	0	0	0	0	0	硫酸铝		CAT LAI	NAN HUI 2 0790	2018/4/17 8:00	162648			
	total					6														

以上是想要的结果
_小黑_ 2018-05-15
  • 打赏
  • 举报
回复

t_shp_voyage_harbor 表的数据
eta_date                  voy_id                                                             harbor_order            port_code
2018/4/17 8:00:00	DFE8DD387FF9432197A45CA8D6BA998E	1	CNDLC
2018/4/18 18:00:00	DFE8DD387FF9432197A45CA8D6BA998E	2	CNSHP
2018/4/20 10:00:00	DFE8DD387FF9432197A45CA8D6BA998E	3	CNDLC
2018/5/14 8:00:00	832F53E35A8B4B1CBDF14D412B566E9D	1	CNDLC
2018/5/15 18:00:00	832F53E35A8B4B1CBDF14D412B566E9D	2	CNSHP
2018/5/16 10:00:00	832F53E35A8B4B1CBDF14D412B566E9D	3	CNDLC


t_shp_entrust 表的数据
   	ENTRUST_ID	BILL_NO	LOAD_PORT	ENTRUST_NAME	GOODS_TYPE_NAME_CN	DESCRIBE_GOODS	DESTINATION_PORT	TOTAL_WEIGHT	BOOKING_REQ
	4E9B22D76DDD4E1681568EC5AAFBB7C1	177QJFJFD82086T	QINHUANGDAO	地中海航运有限公司	镀膜深灰玻	"DARK GREY REFLECTIVE GLASS
"	ARICA	26000	
	53C6F807F17A416A8F698B6B1DA48279	XDQV900453	QINHUANGDAO	法国达飞轮船(中国)有限公司	硫酸铝	ALUMINIUM SULPHATE	CAT LAI	162648	
t_shp_booking 表的数据
   	ENTRUST_ID	ZX_VESSEL_NAME	ZX_VOYAGE	ZX_VOYAGE_ID	BOOKING_ID
	4E9B22D76DDD4E1681568EC5AAFBB7C1	HONG TAI 28	870	832F53E35A8B4B1CBDF14D412B566E9D	B476172B7EA2459F8AF0E1259192A671
	53C6F807F17A416A8F698B6B1DA48279	NAN HUI 2	790	DFE8DD387FF9432197A45CA8D6BA998E	FD3D9762F871409B943D71FD7C6BE791
        52DF79119ACB46CD89CC24941D015FF0	HONG TAI 28	0870	832F53E35A8B4B1CBDF14D412B566E9D	8DB4E0CE819E4E23866753AB50474580
t_shp_entrust_cntr表的数据
   	ENTRUST_ID	CNTR_SIZE	CNTR_TYPE
	4E9B22D76DDD4E1681568EC5AAFBB7C1	20	GP
	53C6F807F17A416A8F698B6B1DA48279	20	GP
	53C6F807F17A416A8F698B6B1DA48279	20	GP
	53C6F807F17A416A8F698B6B1DA48279	20	GP
	53C6F807F17A416A8F698B6B1DA48279	20	GP
	53C6F807F17A416A8F698B6B1DA48279	20	GP
	53C6F807F17A416A8F698B6B1DA48279	20	GP
	52DF79119ACB46CD89CC24941D015FF0	20	GP
	52DF79119ACB46CD89CC24941D015FF0	20	GP
	52DF79119ACB46CD89CC24941D015FF0	20	GP
	52DF79119ACB46CD89CC24941D015FF0	20	GP
 
卖水果的net 2018-05-15
  • 打赏
  • 举报
回复
楼主把问题简化一下,与当前问题无关的表,全部去掉; 给出表结构,测试数据,和你的预期结果,方便大家回复你。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧