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

多列查询时如何保证A.CONTRACT_NUMBER列值唯一?

解决SQL查询中CONTRACT_NUMBER列重复的问题

你的查询出现重复的CONTRACT_NUMBER,核心原因是LEFT JOIN关联的B表(DM_FIN.FIN_LTV_DATAMART)中,同一个合同号对应多条记录。即使A表的CONTRACT_NUMBER是唯一主键,JOIN后也会被B表的多行数据“复制”,导致结果中出现重复的合同号。

另外你原查询中同时使用DISTINCT和GROUP BY属于冗余操作,GROUP BY本身就会对分组字段做去重,无需叠加DISTINCT。

以下是两种针对性的解决方案:

方案1:B表同一合同号的AMT_INTEREST_INCOME值唯一或只需任意一个

先对B表按合同号和利息收入去重,再与A表关联:

SELECT 
  A.CONTRACT_NUMBER
  , A.DTIME_SIGNATURE
  , A.ID_CUID
  , A.CLIENT_SEGMENT
  , A.CLIENT_GENDER
  , A.CLIENT_AGE
  , A.CNT_SIGNED
  , A.AMT_SIGNED
  , A.INSTALMENTS
  , A.PRODUCT
  , B.AMT_INTEREST_INCOME
FROM DM_SALES.V_SALES_DM_DATA A
LEFT JOIN (
  SELECT DISTINCT CONTRACT_NUMBER, AMT_INTEREST_INCOME
  FROM DM_FIN.FIN_LTV_DATAMART
) B ON A.CONTRACT_NUMBER = B.CONTRACT_NUMBER
WHERE 
  A.CONTRACT_STATE <> 'Cancelled' 
  AND a.cnt_signed=1 
  AND A.LOAN_TYPE = 'Consumer Loan'
  AND TRUNC(A.DTIME_SIGNATURE) BETWEEN DATE'2022-08-01' AND DATE '2022-08-31'
ORDER BY A.DTIME_SIGNATURE;

方案2:B表同一合同号有多个不同的AMT_INTEREST_INCOME,需聚合处理

如果需要对同一合同号的利息收入做统计(比如求和、取最大值),可以用聚合函数配合完整的GROUP BY:

SELECT 
  A.CONTRACT_NUMBER
  , A.DTIME_SIGNATURE
  , A.ID_CUID
  , A.CLIENT_SEGMENT
  , A.CLIENT_GENDER
  , A.CLIENT_AGE
  , A.CNT_SIGNED
  , A.AMT_SIGNED
  , A.INSTALMENTS
  , A.PRODUCT
  , SUM(B.AMT_INTEREST_INCOME) AS AMT_INTEREST_INCOME -- 可替换为MAX/MIN等聚合函数
FROM DM_SALES.V_SALES_DM_DATA A
LEFT JOIN DM_FIN.FIN_LTV_DATAMART B ON A.CONTRACT_NUMBER = B.CONTRACT_NUMBER
WHERE 
  A.CONTRACT_STATE <> 'Cancelled' 
  AND a.cnt_signed=1 
  AND A.LOAN_TYPE = 'Consumer Loan'
  AND TRUNC(A.DTIME_SIGNATURE) BETWEEN DATE'2022-08-01' AND DATE '2022-08-31'
GROUP BY 
  A.CONTRACT_NUMBER
  , A.DTIME_SIGNATURE
  , A.ID_CUID
  , A.CLIENT_SEGMENT
  , A.CLIENT_GENDER
  , A.CLIENT_AGE
  , A.CNT_SIGNED
  , A.AMT_SIGNED
  , A.INSTALMENTS
  , A.PRODUCT
ORDER BY A.DTIME_SIGNATURE;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 09:35:16