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

SQL Server:如何获取各s_id对应最新日期的tax_id

解决方案

首先,你的核心需求是获取每个s_id对应最新日期的tax_id,当前SQL的问题在于row_number()的排序方向错误,导致最新日期的记录被标记为较大的row_num值。以下是修正后的SQL语句:

SELECT s_id, tax_id, date_of
FROM (
    SELECT s_id, tax_id, date_of,
           -- 按s_id分区,日期降序排列,最新日期的记录row_num=1
           ROW_NUMBER() OVER(PARTITION BY s_id ORDER BY date_of DESC) AS row_num
    FROM (
        SELECT s_id, tax_id, date_of FROM t5
        UNION
        SELECT s_id, tax_id, date_of FROM t6
    ) AS s1
) AS s2
WHERE row_num = 1;

关键修正点说明:

  • 排序方向调整:将ORDER BY date_of改为ORDER BY date_of DESC,这样每个s_id下最新的日期会排在第一位,对应的row_num为1。
  • 筛选最新记录:外层添加WHERE row_num = 1,直接过滤出每个s_id的最新条目,自然包含s_id=2的单条记录。
  • UNION的选择:如果t5和t6中不存在完全重复的(s_id, tax_id, date_of)记录,建议改用UNION ALL,避免不必要的去重操作,提升查询性能。

执行修正后的SQL后,你会得到如下结果:

1   345 2022-01-10
2   234 2022-01-02
3   458 2022-01-04
4   789 2022-01-07
5   222 2022-01-07

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:52:29