【发布时间】:2019-03-25 19:07:44
【问题描述】:
我正在尝试将表 HE 连接到表 S,如下面的代码所示。
为了让我获得匹配并加入数据,我必须在 S 和 HE 表中的 [Headendmarket&tbcode] 和 [SETClientID+Market] 中连接客户 ID 和市场。
但是因为列中的一些数据不干净。上面的 concat 还不够,连接中的 S 中有一些缺失的东西。
对我来说,解决方案是在运行下面的查询后进一步查找保留为空的数据的数据,并在 S.[Market]&s.[client] 上执行另一个 concat 并与 HE 进一步左连接。[ HeadendMarket] 和 [HE.Advertisername]。这将匹配剩余的空数据以查看是否存在可能的匹配并带回它可以用于 S 表的数据。
不确定在此查询中执行此操作的最佳方式是什么?
SELECT DISTINCT CONCAT(HE.[AdvertiserTBCode],HE.[HeadendMarket]) AS [Headendmarket&tbcode]
,CONCAT(S.[CLIENTID],S.[Market]) AS [SETClientID+Market]
,HE.[CurrentRegionName]
,HE.[CurrentMarketName]
,HE.[CurrentSalesTeamName]
,HE.[CurrentSalesOfficeName]
,HE.[CurrentCorpAEName]
,HE.[CurrentAEType]
,HE.[AdvertiserTBCode] --Has all the correct data--
,HE.[AdvertiserName]
,HE.[ParentAdvertiserName]
,HE.[HeadendRegion]
,HE.[HeadendMarket] --has all correct data--
,HE.[CorpCategoryGroup]
,S.[Actuals vs projections]
,S.[Year]
,S.[Month]
,S.[Area]
,CASE S.[Market] --some markets not the same name which is why we are doing this to have the same markets as HE Table--
WHEN 'Twin Cities' THEN 'Minneapolis - St. Paul'
WHEN 'Fort Myers' THEN 'Ft. Myers - Naples'
WHEN 'Bowling Green' THEN 'Nashville'
WHEN 'North Miss' THEN 'TUPELO'
WHEN 'Monroe, LA' THEN 'Monroe'
WHEN 'Southern Miss-Hattiesburg/Laurel/Meridian' THEN 'SOUTHERN MISS'
WHEN 'Northern Miss-Columbus/Tupelo' THEN 'Tulepo'
WHEN 'Little Rock, AR' THEN 'Little Rock'
WHEN 'Fort Wayne' THEN 'Ft. Wayne'
WHEN 'Wheeling/Youngstown/Canfield' THEN 'WYC'
WHEN 'Johnstown/Altoona/State College' THEN 'Johnstown-Altoona'
WHEN 'Washington, D.C.' THEN 'Washington'
ELSE S.[Market] END AS [SET Market]
,S.[Zone Type]
,S.[Category]
,S.[Subcategory]
,S.[Event]
,S.[Network]
,S.[AE]
,S.[Client] -- some wrong fields--
,S.[ClientID] --some incorrect data entered. this with the market concatenation should match the data in the HE table in a perfect world.--
,S.[# Spots]
,S.[Gross ($)]
FROM [REO].[dbo].[Sports] S
LEFT JOIN [REO].[dbo].[HF_Final] HE
ON CONCAT(S.[CLIENTID],CASE S.[Market]
WHEN 'Twin Cities' THEN 'Minneapolis - St. Paul'
WHEN 'Fort Myers' THEN 'Ft. Myers - Naples'
WHEN 'Bowling Green' THEN 'Nashville'
WHEN 'North Miss' THEN 'TUPELO'
WHEN 'Monroe, LA' THEN 'Monroe'
WHEN 'Southern Miss-Hattiesburg/Laurel/Meridian' THEN 'SOUTHERN MISS'
WHEN 'Northern Miss-Columbus/Tupelo' THEN 'Tulepo'
WHEN 'Little Rock, AR' THEN 'Little Rock'
WHEN 'Fort Wayne' THEN 'Ft. Wayne'
WHEN 'Wheeling/Youngstown/Canfield' THEN 'WYC'
WHEN 'Johnstown/Altoona/State College' THEN 'Johnstown-Altoona'
WHEN 'Washington, D.C.' THEN 'Washington'
ELSE S.[Market] END)
= CONCAT(HE.[AdvertiserTBCode],HE.[HeadendMarket])
【问题讨论】:
-
请用示例数据更新您的问题。有关详细信息,请参阅 How to Ask 和 minimal reproducible example。
标签: sql sql-server tsql sql-server-2012