回 帖 发 新 帖 刷新版面

主题:求一条sql语句

各位大侠急求??
一个表中如下数据
孔号,岩性名称,地层单位,地层代号,层底深度
zk1   粉土    第四系    Q4       15    
zk1   粉土    第四系    Q4       21.3   
zk1   灰岩    馒头组    T5       31.5  
zk1   灰岩    馒头组    T5       41.6  
zk1   砂岩    石头组    P4       50
zk1   花岗岩  龙王组    Z4       71
zk2   粉土    第四系    Q4       15    
zk2   粉土    第四系    Q4       21.3   
zk2   灰岩    馒头组    T5       31.5  
zk2   灰岩    馒头组    T5       41.6  
zk2   砂岩    石头组    P4       50
zk2   花岗岩  龙王组    Z4       71
....


上面是一个表如何通过一条sql实现上面重复的值,按孔号取“岩性名称,地层单位相同且层底深度最大的一条”如下面
 按zk1取
zk1   粉土    第四系    Q4       21.3   
zk1   灰岩    馒头组    T5       41.6  
zk1   砂岩    石头组    P4       50
zk1   花岗岩  龙王组    Z4       71


 按zk2取
zk2   粉土    第四系    Q4       21.3   
zk2   灰岩    馒头组    T5       41.6  
zk2   砂岩    石头组    P4       50
zk2   花岗岩  龙王组    Z4       71

回复列表 (共7个回复)

沙发

select max(底层深度) from 表名 Group By 孔号,岩石性质,底层单位 order by 孔号,岩石性质,底层单位 as asc

我没有调试,你自己运行试一下

我个人觉得你的数据库应该优化一下,多建几个表,更方便查询一些

板凳

我发现这个问题怎么老有人不停的,反复的问,奇怪。

3 楼

再回个,好象以前也回过
select 孔号,岩性名称,地层单位,地层代号,层底深度  from 表 a  where 
a.层底深度=(select max(b.层底深度)  from 表 b 
where  a.岩性名称=b.岩性名称 and a.地层单位=b.地层单位 ) 
试试。

4 楼

关键是业务不精,才会不停的问,答非所问才会不停的问。
1楼和3楼的回答均不正确,但还是谢谢1楼和3楼的热心

5 楼

晕,我怎么可能不知道你的意思。这个语句我都写过好多遍。
我怎么会答非所问啊

6 楼

select *from (SELECT *,Place=(SELECT COUNT(DISTINCT 层底深度) FROM @t WHERE 层底深度>=a.层底深度 and 岩性名称=a.岩性名称)
FROM @t a ) b where place=1

7 楼

应该是像二楼那样做才对的吧,楼主的意思是要按组取出信息,按组取信息自然要用到group by

我来回复

您尚未登录,请登录后再回复。点此登录或注册