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

SQL分组需求:每组最多2行,GARAG与RET行匹配异常问题

解决GARAG与RET记录分组配对问题

我懂你遇到的困扰了——当同一个分组里有两条GARAG记录的起始时间都早于RET记录时,你希望每个GARAG都能和RET组成单独的一行,但当前的查询没法实现这个效果对吧?咱们来搞定它。

核心思路

要实现每个符合条件的GARAG都和RET配对成一行,关键是要把同一个分组下的GARAG记录和RET记录做关联匹配,筛选出GARAG起始时间早于RET的组合,这样每条符合条件的GARAG都会对应生成一行包含RET的记录。

解决方案代码

假设你的表包含分组标识、记录类型(Type)和起始时间(StartDate)这些核心字段,你可以用下面的SQL查询:

SELECT 
    g.group_id,
    g.Type AS Garag_Type,
    g.StartDate AS Garag_StartDate,
    r.Type AS Ret_Type,
    r.StartDate AS Ret_StartDate
FROM your_table g
INNER JOIN your_table r 
    ON g.group_id = r.group_id 
    AND g.Type = 'GARAG' 
    AND r.Type = 'RET'
    AND g.StartDate < r.StartDate
ORDER BY g.group_id, g.StartDate;

代码解释

  1. 关联逻辑:通过INNER JOIN将同一个分组(group_id相同)下的GARAG和RET记录关联起来,同时用g.StartDate < r.StartDate筛选出时间符合要求的配对。
  2. 结果输出:每条符合条件的GARAG都会和对应的RET组成一行——如果有2条GARAG都早于同一条RET,就会生成2行结果,每行分别包含一个GARAG和那个RET,完全满足你“分组内各包含一行GARAG和一行RET”的需求。
  3. 排序优化:最后按分组标识和GARAG的起始时间排序,让结果更清晰易读。

如果你的分组逻辑不是基于group_id,只需要把ON子句里的g.group_id = r.group_id换成实际的分组字段就行啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:20:44