表:
施工序号 施工内容 起始深度 结束深度
1 AC 1198.000 2116.000
2 AC 2088.000 2900.000 --》想提取的记录
3 AC 2818.000 3190.000
2 DEN 2088.000 2900.000 --》想提取的记录
3 DEN 2818.000 3190.000我想提取在同一个施工序号内,且同时包含AC和DEN,并且起始深度和结束深度之间距离最大的那两条记录。
注:同一个施工序号的起始深度和结束深度一致。
请教SQL语句的写法。谢谢!
施工序号 施工内容 起始深度 结束深度
1 AC 1198.000 2116.000
2 AC 2088.000 2900.000 --》想提取的记录
3 AC 2818.000 3190.000
2 DEN 2088.000 2900.000 --》想提取的记录
3 DEN 2818.000 3190.000我想提取在同一个施工序号内,且同时包含AC和DEN,并且起始深度和结束深度之间距离最大的那两条记录。
注:同一个施工序号的起始深度和结束深度一致。
请教SQL语句的写法。谢谢!
解决方案 »
- 高分求救一个SQL语句
- [高分求救]oracle analytic workspace java API的问题!!
- oracle 位运算 怎么处理? 在线等!
- 免安装的客户端无法运行sqlldr
- 请问chained rows和migrated rows中文怎么说?
- oracle数据库修复问题 特急!!!
- 我建触发器出现的问题
- 给出一个日期,如何求出这个日期是该年该月的第几周
- 关于internal的问题,高分相赠!
- ORA-01000: maximum open cursors exceeded 错误
- 关于模糊查询like的问题。在线等~~~
- 初学oracle,有个sql语句弄了好久没弄出来,好心人帮忙看下,谢谢了!
select 1 id,'AC' content,1198.000 sd,2116.000 ed from dual
union all
select 2 id,'AC' content,2088.000 sd,2900.000 ed from dual
union all
select 3 id,'AC' content,2818.000 sd,3190.000 ed from dual
union all
select 2 id,'DEN' content,2088.000 sd,2900.000 ed from dual
union all
select 3 id,'DEN' content,2818.000 sd,3190.000 ed from dual
)
select id,content,sd,ed from (
select id,content,sd,ed, row_number() over(partition by esdd order by esdd) rn from(
select id,content,sd,ed,max(ed-sd) esdd from temp
where id in (select id from temp group by id having count(id)>1)
group by id,content,sd,ed
)
) where rn = 1 order by id
ID content sd ed
2 AC 2088 2900
3 AC 2818 3190
但不是我要的结果。我要的是
2 AC ...
2 DEN ...
那两条记录。各位,还有别的方法吗?
select 1 id,'AC' content,1198.000 sd,2116.000 ed from dual
union all
select 2 id,'AC' content,2088.000 sd,2900.000 ed from dual
union all
select 3 id,'AC' content,2818.000 sd,3190.000 ed from dual
union all
select 2 id,'DEN' content,2088.000 sd,2900.000 ed from dual
union all
select 3 id,'DEN' content,2818.000 sd,3190.000 ed from dual
)
select id,content,sd,ed from (
select id,content,sd,ed,max(ed-sd) esdd from temp
where id in (SELECT t.id FROM temp t WHERE t.content = 'AC'
INTERSECT
SELECT t.id FROM temp t WHERE t.content = 'DEN')
group by id,content,sd,ed
ORDER BY esdd DESC)
WHERE ROWNUM<3
。