sql 查询某字段最大值对应的另一个字段的值

lj19860802 2010-06-24 10:14:29
表:a

finterid fitemid fprice
1 a 1
2 b 2
3 c 2
4 a 3
5 b 4
.
.
.

finterid 字段没有重复的值

我自己写的语句使这样的:
select fitemid, max(FInterid),fprice from a group by Fitemid,fprice order by a.fitemid
因为我把fprice也group by 了,所以得出的结果的话,例如这个表,fitemid有有行值,
fprice不group by 的话,又语法错误~其他的聚合函数也没一个适用的,怎么办呢
...全文
3811 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lj19860802 2010-06-24
  • 打赏
  • 举报
回复

select a.fprice from a t1 inner join (select t1.fitemid, max(t1.FInterid) as finterid from a t1 group by t1.Fitemid order by t1.fitemid) t2 on t1.fitemid = t2.fitemid and t1.finterid = t2.finterid

我先得出每个fitemid的最大值,再从里面分别找fprice,这样写提示
除非同时指定了 TOP,否则 ORDER BY 子句在视图、内嵌函数、派生表和子查询中无效。
lj19860802 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 xyj052 的回复:]
如果你要取的是finterid的最大值,那么直接这样就一了

SQL code
select a.* from 表a a inner join (select max(FInterid) as maxf from 表a) b on a.finterid=b.maxf
[/Quote]

不行,没能得出我要的结果
xyj052 2010-06-24
  • 打赏
  • 举报
回复
如果你要取的是finterid的最大值,那么直接这样就一了
select a.* from 表a  a inner join (select  max(FInterid) as maxf from 表a) b on a.finterid=b.maxf
xyj052 2010-06-24
  • 打赏
  • 举报
回复
select a.* from 表a  a inner join (select  max(FInterid) as maxf from 表a group by fitemid) b on a.finterid=b.maxf


是不是这样?

听楼主的意思好像是取一个字段的最大值,然后根据这个最大值,取表中的记录,是这个意思吧
你先把最大值取出来,再根据最大值取值就可以了
lj19860802 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dongma_yifei 的回复:]
假如有最大值的记录是多笔怎么办哪?

实际上你需要在得出最大值的结果集上再链接查询出对应的记录。

#1楼 的结果就符合你的要求。
但是还是会存在对应最大值的记录有多笔的问题
[/Quote]

我要查的是finterid最大值对应过去的Fprice

GROUP by 里面如果写上fprice的话,会用同一个fitemid 出现两个值

我就是想避免这种结果
随风 2010-06-24
  • 打赏
  • 举报
回复
假如有最大值的记录是多笔怎么办哪?

实际上你需要在得出最大值的结果集上再链接查询出对应的记录。

#1楼 的结果就符合你的要求。
但是还是会存在对应最大值的记录有多笔的问题
swhong5481310 2010-06-24
  • 打赏
  • 举报
回复
price 字段不能为字符串
select * from a where(finterid in(selct max(fprice )from a group by Fitemid ))
nightmaple 2010-06-24
  • 打赏
  • 举报
回复
楼主你是想要什么样的结果呢?
lj19860802 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ldslove 的回复:]
SQL code
select * from a t
where not exists(select 1 from a where t.fitemid=fitemid and t.FInterid<FInterid)
[/Quote]
你的select 1 又是什么意思
修改一下昵称 2010-06-24
  • 打赏
  • 举报
回复
不懂 你的意思》
东那个升 2010-06-24
  • 打赏
  • 举报
回复
select *  from a t
where not exists(select 1 from a where t.fitemid=fitemid and t.FInterid<FInterid)
内容概要:本文系统研究了直流微网中直流母线电压恢复的二次控制策略,重点提出并实现了基于虚拟压降补偿的方法在并联双向Buck-boost变换器中的应用。通过Simulink搭建详细的仿真模型,深入分析了虚拟压降原理及其在多变换器并联系统中的协调控制机制,有效解决了因线路阻抗差异导致的电压偏差与电流分配不均问题,实现了母线电压的精确调节与快速恢复,显著提升了系统的稳定性、均流性能与电能质量。研究涵盖了控制策略设计、关键参数整定及动态响应特性验证,提供了完整的仿真流程与结果分析。; 适合人群:具备电力电子、自动控制及微电网相关专业知识背景,熟悉Simulink仿真环境,从事新能源发电、直流配电系统、分布式能源控制等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入理解直流微网中母线电压稳定与均流控制的关键技术;②掌握虚拟压降补偿在二次控制中的理论基础与实现方法;③构建并调试并联Buck-boost变换器的协同控制系统仿真模型,服务于学术研究、课程设计或实际工程项目开发; 阅读建议:学习过程中应结合Simulink模型细致剖析控制回路结构,重点关注虚拟阻抗参数对系统动态性能与鲁棒性的影响,建议通过改变负载工况、线路参数或增加变换器数量等方式进行对比仿真,以全面评估控制策略的有效性与适应性。

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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