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

SQL查询各MasterID首次注册信息仅返回1条结果问题求助

问题原因

核心问题出在ROW_NUMBER()窗口函数的逻辑上:

  • 你当前的写法没有设置分组规则,是全局按注册时间升序排序,所有记录共享同一个编号序列,因此RN=1只会匹配到全系统最早注册的1条记录
  • 你的需求是每个MasterID单独统计首次注册记录,需要给窗口函数增加按MasterID分组的规则,让每个MasterID对应的所有记录单独排序编号,每个分组内的编号1就对应该MasterID的最早注册记录
修正后的SQL
SELECT TOP 50
    MasterID, RegistrationDate, SourceName, SystemName
FROM (
    SELECT
        a.ID_MASTER AS MasterID, 
        a.DATE_N AS RegistrationDate,
        c.Name2 AS SourceName,
        d.Name_2 AS SystemName,
        -- 新增PARTITION BY按MasterID分组,组内按注册时间升序排列
        ROW_NUMBER() OVER(PARTITION BY a.ID_MASTER ORDER BY a.DATE_N ASC) AS RN
    FROM C_Master_USER a
    JOIN V_DL_C_USER b ON a.ID_USER = b.ID 
    JOIN c_source c ON b.ID_Source = c.ID
    JOIN C_SYS_TYPE d ON b.ID_SYS_TYPE = d.ID
) t
WHERE RN = 1
注意事项
  • 原SQL中C_MASTER_USE表名和你给出的表结构C_Master_USER不一致,已修正对齐
  • 如果存在同一个MasterID下多个用户注册时间完全相同的场景,ROW_NUMBER()会随机返回其中一条,如需保留所有同时间的最早记录,可将ROW_NUMBER()替换为RANK()
  • 若不需要限制返回条数,可删除外层的TOP 50关键字获取所有MasterID的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:45:03