sql问题:相同id情况下,如何按时间逆序取符合条件的第一条数据。

IDFIDValueTime12010000211100003122000042290005401000063210000查询相同FID情况下,如果有Value>0的记录... ID FID Value Time
1 2 0 10000
2 1 1 10000
3 1 2 20000
4 2 2 9000
5 4 0 10000
6 3 2 10000

查询相同FID情况下,如果有Value>0的记录,则按Time desc顺序取本组第一条Value>0的记录。如果没有,按Time desc顺序取本组第一条Value=0的记录。结果按FID顺序排列
则查询结果应为:
ID FID Value Time
3 1 2 20000
4 2 2 9000
6 3 2 10000
5 4 0 10000
展开
 我来答
雪V歌
2017-09-18 · 知道合伙人数码行家
雪V歌
知道合伙人数码行家
采纳数:78698 获赞数:222931
泉州兴瑞发公司2015-2017最佳优秀员工。

向TA提问 私信TA
展开全部
使用分析函数row_number() over (partiion by ... order by ...)来进行分组编号,然后取分组标号值为1的记录即可。目前主流的数据库都有支持分析函数,很好用。
其中,partition by 是指定按哪些字段进行分组,这些字段值相同的记录将在一起编号;order by则是指定在同一组中进行编号时是按照怎样的顺序。
追问
row_number() over (partiion by ... order by ...),order by后可以是多个字段么?
比如:partiion by column1 order by column2 desc,column3 asc?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式