Объединение 2 столбцов, где один столбец содержит уникальные записи, а другой содержит дубликаты - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть 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

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

Попробуйте использовать отличительные

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 голосов
/ 09 апреля 2019

Попробуйте использовать CROSS APPLY с TOP 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...