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

如何将相同courtnum和casenum的SQL表数据合并为单行?

合并相同courtnum和casenum的行解决方案

针对你的需求,因为同一组(相同courtnum和casenum)的行中,各日期列是互补的(一行有值另一行为NULL),可以用GROUP BY结合聚合函数MAX()(或MIN())来合并行,具体实现如下:

针对你的test表的示例代码

SELECT 
    courtnum,
    casenum,
    MAX(startdate) AS startdate,
    MAX(enddate) AS enddate,
    MAX(pocdate) AS pocdate,
    MAX(pocenddate) AS pocenddate
FROM test
GROUP BY courtnum, casenum

扩展到8列的情况

如果实际表有8列,只要把剩下的列也按照同样的方式处理——对需要合并的非分组列,用MAX()(或MIN())包裹即可。比如假设还有col7、col8两列,代码就改成:

SELECT 
    courtnum,
    casenum,
    MAX(startdate) AS startdate,
    MAX(enddate) AS enddate,
    MAX(pocdate) AS pocdate,
    MAX(pocenddate) AS pocenddate,
    MAX(col7) AS col7,
    MAX(col8) AS col8
FROM test
GROUP BY courtnum, casenum

原理说明

MAX()和MIN()函数会自动忽略NULL值,所以同一组中只要有一行的某列有非空值,聚合后就能得到这个值,刚好实现互补行的合并。如果你的列中存在同一组内多行都有非空值的情况,需要根据实际业务逻辑选择用MAX()、MIN()或者其他聚合函数(比如STRING_AGG()处理字符串类型)。

内容的提问来源于stack exchange,提问作者Mohin K H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 05:52:03