一组数据中取状态的最大值

一家公司的数据,又更新了一版时,状态status字段值会加1,现在想报表页面展示状态是最大的公司数据,其中包含了年月,指标等字段,更新时,变更的是金额数据,数据集的sql该咋写呢

SQL 嘿嘿嘿嘿嘿嘿 发布于 2023-10-25 17:20
1min目标场景问卷 立即参与
回答问题
悬赏:0 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
LamChinLv5见习互助
发布于2023-10-25 17:37

Oracle为例

select  年月,金额,status

from (select  年月,金额,status,

                     row_number()over(partition by 年月 order by to_number(status)  desc) as seq

          from table

         ) t

where t.seq = 1

如果除了年月还有其他维度也需要补充上,status如果是字符串类型,需要to_number(),如果是数字类型就不用

  • 嘿嘿嘿嘿嘿嘿 嘿嘿嘿嘿嘿嘿(提问者) partition by 年月,后面可以加其他维度吗,现在是效果是年月下status这个最大的数据,但要的是年月下某个公司的某个指标的金额下状态最大的
    2023-10-26 11:38 
  • LamChin LamChin 回复 嘿嘿嘿嘿嘿嘿(提问者) 可以呀,除了年月有其他维度要加上
    2023-10-26 13:02 
  • 嘿嘿嘿嘿嘿嘿 嘿嘿嘿嘿嘿嘿(提问者) 回复 LamChin 不行呀 ......partition by 年月 公司 指标 order by .... 报错了
    2023-10-26 14:28 
  • LamChin LamChin 回复 嘿嘿嘿嘿嘿嘿(提问者) partition by 年月,公司 ,指标 order by .... 你有用符号隔开吗
    2023-10-26 15:25 
最佳回答
0
Z4u3z1Lv6专家互助
发布于2023-10-25 17:25

SqlServer为例

SELECT * FROM TABLE A

INNER JOIN (SELECT 公司,max(status) [max_] FROM TABLE GROUP BY 公司) B

on a.公司=b.公司 and a.status=b.max_

  • 2关注人数
  • 168浏览人数
  • 最后回答于:2023-10-25 17:37
    请选择关闭问题的原因
    确定 取消
    返回顶部