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

PostgreSQL按唯一ID首行展示数值其余填充null/0的SQL查询问题

实现方案

你可以通过PostgreSQL的窗口函数ROW_NUMBER()实现需求,示例代码如下:

版本1:非首行返回NULL

SELECT 
    contrat_pentete_id,
    chiffre_affaires_id,
    CASE WHEN rn = 1 THEN chiffre_affaires_montant_total ELSE NULL END AS chiffre_affaires_montant_total
FROM (
    SELECT 
        DISTINCT contrat_pentete_id,
        chiffre_affaires_id,
        chiffre_affaires_montant_total,
        ROW_NUMBER() OVER (PARTITION BY contrat_pentete_id ORDER BY chiffre_affaires_id ASC) AS rn
    FROM chiffre_affaires
) t
ORDER BY contrat_pentete_id, chiffre_affaires_id;

版本2:非首行返回0

只需修改CASE语句的ELSE分支即可:

CASE WHEN rn = 1 THEN chiffre_affaires_montant_total ELSE 0 END AS chiffre_affaires_montant_total

逻辑说明

  • 内层查询通过PARTITION BY contrat_pentete_id将数据按合同头ID分组
  • 每组内按chiffre_affaires_id升序排序,最小ID对应的行号为1
  • 外层查询通过CASE判断行号,仅行号为1的行返回原值,其余行返回指定的空值或0
  • 末尾的ORDER BY为可选配置,用于保证输出顺序和分组展示逻辑一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:36:02