连接2列,其中1列具有唯一记录,另一列具有重复

问题描述 投票:0回答:2

我在一个表中有2列Risk_Geo_ID,其中有重复项,而其他表中的Geography_Identifier具有唯一记录。执行内部联接会给我重复记录,并且无法在多维数据集中处理此查询,因为Geography_Identifier是PK并且它是唯一的。需要查询才能获得唯一记录。这是代码:

SELECT     
s.Geography_Identifier     
,s.State_Code    
,s.State_Name     
,s.County_Name    
,s.City_Name    
,s.ZIP_Code     
,a.Risk_ID      
,a.Risk_Address     
,a.Latitude    
,a.Longitude     
,a.Distance_to_Coast    
,a.Insurance_Score    
FROM [Policy].[Dim_Risk] AS a    
INNER JOIN [Policy].[Fact_Monthly_Policy_Snap] AS b    
ON b.Risk_ID = a.Risk_ID    
AND b.Insurance_score = a.Insurance_Score    
INNER JOIN [Common].[Dim_Geography] AS s    
ON b.Risk_Geo_ID =  s.Geography_Identifier
sql sql-server ssms
2个回答
0
投票

尝试使用distinct

SELECT     
distinct s.Geography_Identifier     
,s.State_Code    
,s.State_Name     
,s.County_Name    
,s.City_Name    
,s.ZIP_Code     
,a.Risk_ID      
,a.Risk_Address     
,a.Latitude    
,a.Longitude     
,a.Distance_to_Coast    
,a.Insurance_Score    
FROM [Policy].[Dim_Risk] AS a    
INNER JOIN [Policy].[Fact_Monthly_Policy_Snap] AS b    
ON b.Risk_ID = a.Risk_ID    
AND b.Insurance_score = a.Insurance_Score    
INNER JOIN [Common].[Dim_Geography] AS s    
ON b.Risk_Geo_ID =  s.Geography_Identifier

0
投票

尝试使用CROSS APPLYTOP 1,如果你想得到这样的ID一行:

SELECT     
 q.Geography_Identifier     
,s.State_Code    
,s.State_Name     
,s.County_Name    
,s.City_Name    
,s.ZIP_Code     
,a.Risk_ID      
,a.Risk_Address     
,a.Latitude    
,a.Longitude     
,a.Distance_to_Coast    
,a.Insurance_Score    
FROM [Policy].[Dim_Risk] AS a    
INNER JOIN [Policy].[Fact_Monthly_Policy_Snap] AS b    
ON b.Risk_ID = a.Risk_ID    
AND b.Insurance_score = a.Insurance_Score  
CROSS APPLY
( 
   SELECT 
   TOP 1
   *
   FROM [Common].[Dim_Geography] AS s    
   WHERE s.Geography_Identifier = b.Risk_Geo_ID
)q
© www.soinside.com 2019 - 2024. All rights reserved.