Sql 如何添加在左联接和CONCAT中创建的case语句

Sql 如何添加在左联接和CONCAT中创建的case语句,sql,tsql,sql-server-2012,Sql,Tsql,Sql Server 2012,嗨,我正在尝试从两个不同的表连接两个连接的字段 我正在尝试将带有代码和市场的S表与带有代码和市场的SM表连接起来 S表中有几个市场不匹配,所以我创建了一个案例语句,如下所示,这样我就可以加入S市场字段和S广告商代码字段。 这是行不通的 获取此错误 Msg 207,16级,状态1,第39行 列名“SET Market”无效。 Msg 207,16级,状态1,第35行 列名“SET Market”无效 SELECT dISTINCT SM.[Region] ,SM.[Market]

嗨,我正在尝试从两个不同的表连接两个连接的字段

我正在尝试将带有代码和市场的S表与带有代码和市场的SM表连接起来

S表中有几个市场不匹配,所以我创建了一个案例语句,如下所示,这样我就可以加入S市场字段和S广告商代码字段。 这是行不通的

获取此错误 Msg 207,16级,状态1,第39行 列名“SET Market”无效。 Msg 207,16级,状态1,第35行 列名“SET Market”无效

SELECT dISTINCT SM.[Region]
      ,SM.[Market]
      ,SM.[PA]
      ,SM.[Advertiser]
      ,SM.[AdvertiserCode]
      ,CONCAT(SM.[advertisercode],SM.[market]) as [smdashadcode+market]
      ,S.[Actuals vs projections]
      ,S.[Year]
      ,S.[Month]
      ,S.[Area]
      ,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 'TUPELO'
            WHEN 'Little Rock, AR' THEN 'LITTLE ROCK'
        ELSE S.[Market] END AS [SET Market]

      ,S.[Zone Type]
      ,S.[Category]
      ,S.[Subcategory]
      ,S.[Event]
      ,S.[Network]
      ,S.[AE]
      ,S.[Client]
      ,S.[ClientID]
      ,S.[# Spots]
      ,S.[Gross ($)]
      ,CONCAT(S.[CLIENTID],[SET Market]) AS [SETClientID+Market]

  FROM [MAIN].[dbo].[CET Sports] S
  LEFT JOIN [MAIN].[dbo].[Data] SM
         ON CONCAT(S.[CLIENTID],S.[SET Market]) = CONCAT(SM.[advertisercode],SM.[market])
预期结果是

S市场sm市场sm顾问sm AE
纳什维尔纳什维尔创意索菲亚

你不能像在..声明中那样使用
[SET Market]

您可以使用创建此列的CASE语句:

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 'TUPELO'
            WHEN 'Little Rock, AR' THEN 'LITTLE ROCK'
        ELSE S.[Market] END) = CONCAT(SM.[advertisercode],SM.[market])

谢谢你,真管用!问题是,在加入之后,我怎么仍然有一些空值?除了广告商代码和市场之外,我还有什么办法加入其他Concat吗?。我正在尽可能少地获取空值。添加了,但如果您能回答我上面的问题,您需要添加示例数据和预期结果,并说明哪些值不应为空值。请尝试将
左连接更改为
内部连接。