You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查询指定资产指定期间内序列数最大的记录

获取指定条件下序列值最大的记录

针对你的需求,这里提供两种常用的实现方法:

方法一:子查询匹配最大值

先通过子查询算出目标条件下的最大序列值,再筛选对应记录:

SELECT
  ASSET_MAIN_NUMBER,
  FISCAL_YEAR_PERIOD,
  SEQUENCE_NUMBER_IN_THE_PERIOD
FROM
  valuetable
WHERE
  assetnumber = 123
  AND FISCAL_YEAR_PERIOD = 2021003
  AND SEQUENCE_NUMBER_IN_THE_PERIOD = (
    SELECT MAX(SEQUENCE_NUMBER_IN_THE_PERIOD)
    FROM valuetable
    WHERE assetnumber = 123
      AND FISCAL_YEAR_PERIOD = 2021003
  );

如果SEQUENCE_NUMBER_IN_THE_PERIOD是带前导零的字符串(比如'01'、'04'),只要字符串长度统一,MAX()函数能按字符顺序正确识别最大值。

方法二:窗口函数排序取第一条

适用于支持窗口函数的数据库(如MySQL 8+、PostgreSQL、SQL Server等),通过排序标记取第一条:

SELECT
  ASSET_MAIN_NUMBER,
  FISCAL_YEAR_PERIOD,
  SEQUENCE_NUMBER_IN_THE_PERIOD
FROM (
  SELECT
    *,
    ROW_NUMBER() OVER (ORDER BY SEQUENCE_NUMBER_IN_THE_PERIOD DESC) AS rn
  FROM valuetable
  WHERE assetnumber = 123
    AND FISCAL_YEAR_PERIOD = 2021003
) t
WHERE rn = 1;
  • 如果存在多条记录序列值同为最大值,ROW_NUMBER()会随机返回其中一条;若要保留所有最大值记录,可替换为RANK()。
  • 若序列值是长度不一致的字符串(如'1'、'10'),需先转为数值类型再排序,比如ORDER BY CAST(SEQUENCE_NUMBER_IN_THE_PERIOD AS UNSIGNED) DESC(MySQL)。

内容的提问来源于stack exchange,提问作者Arvizu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 20:12:14