请教一个SQL语句的写法

itti 2011-04-06 11:04:44
表:
施工序号 施工内容 起始深度 结束深度
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语句的写法。

谢谢!
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
itti 2011-04-07
  • 打赏
  • 举报
回复
谢谢zhang的耐心解答。完全正确,并从中学会了不少
Phoenix_99 2011-04-06
  • 打赏
  • 举报
回复
with temp as (
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
itti 2011-04-06
  • 打赏
  • 举报
回复
对的, 之差最大。
kaertiger 2011-04-06
  • 打赏
  • 举报
回复
起始深度和结束深度之间距离最大 是什么意思?
之差吗?
zhangji2411 2011-04-06
  • 打赏
  • 举报
回复
with temp as (
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

itti 2011-04-06
  • 打赏
  • 举报
回复
谢谢 Phoenix_99 的回答!

返回结果是:
ID content sd ed
2 AC 2088 2900
3 AC 2818 3190
但不是我要的结果。

我要的是
2 AC ...
2 DEN ...
那两条记录。

各位,还有别的方法吗?

17,377

社区成员

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

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