sql语句编写的问题求解

我想根据s_fund分类 拿到b最大值的那一行 应该怎么写sql。
就比如我想要获取s_fund=aaa和s_fund=bbb中的b最大的那一行和 就是id=3和id=7的那两行,我用group by s_fund 但是就拿不到s_date的值。 因为这个数据也是经过多次子查询查出来的,再嵌套一层子查询的话会很复杂

图片说明

3个回答

select s_date from tablename where b in (select max(b) from tablename group by s_found)

这样就可以了,用了group by 前面就要用函数而不是某个字段。

xunluren2
sc.vooc 回复爱上1237: 没有问题的话采纳一下吧
大约一年之前 回复
xunluren2
sc.vooc 回复sc.vooc: 没有问题的话采纳一下吧
大约一年之前 回复
xunluren2
sc.vooc 回复爱上1237: 对的,我写的比较匆忙没有试,是用 in,多行查询
大约一年之前 回复
acax22277111
爱上1237 我知道你的意思了 你是想select s_date,s_fund,b from tablename where b in (select max(b) from tablename group by s_fund)这样吧 我懂啦 谢谢了
大约一年之前 回复
acax22277111
爱上1237 你这样不行吧, 里面那个查询group by后是有多行的 而且max(b)得出的是b的值 怎么能s_date = max(b)呢
大约一年之前 回复

图片说明

SELECT s_fund,max(b) as maxb FROM test1
GROUP BY s_fund

看下此图;符合你说的 获取s_fund=aaa和s_fund=bbb中的b最大的那一行;

select * from (
select *,row_number() over(partition by s_fund order by b desc ) rn from tablename )
where rn = 1

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问