2017-01-02 51 views
0

我想從國家列中獲取子字符串,基於UserCountry列。從sql server中的另一列中選擇從字段的子字符串

這是我當前的輸出,基於我的查詢。

enter image description here

現在我想的是,如果userCountry列的值是新加坡然後在全國列應該只有新加坡

因此,在這些2結果列全國預計我的輸出應該是

    在第一行
  • :新加坡
  • 在第二排:馬來西亞

國家列有,分隔值。

這是我的查詢

select PU.Email,PUC.DisplayName UserCountry 
    ,STUFF((SELECT ',' + IIF(C.DisplayName IS NOT NULL,C.DisplayName,CTC.TargetingId) 
      FROM CampaignTargeting CTC 
      LEFT JOIN Country C On CTC.TargetingId = C.Id 
      WHERE CTC.CampaignId =Camp.Id and CTC.TypeName='Country' 
     FOR XML PATH('')), 1, 1, '') AS Country 
    ,STUFF((SELECT ',' + IIF(P.DisplayName IS NOT NULL, P.DisplayName,CTP.TargetingId) 
      FROM CampaignTargeting CTP 
      LEFT JOIN Profession P On CTP.TargetingId = P.Id 
      WHERE CTP.CampaignId =Camp.Id and CTP.TypeName='Profession' 
     FOR XML PATH('')), 1, 1, '') AS Profession 
    ,STUFF((SELECT ',' + IIF(S.DisplayName IS NOT NULL, S.DisplayName,CTS.TargetingId) 
      FROM CampaignTargeting CTS 
      LEFT JOIN Specialty S On CTS.TargetingId = S.Id 
      WHERE CTS.CampaignId =Camp.Id and CTS.TypeName='Specialty' 
     FOR XML PATH('')), 1, 1, '') AS Specialty 
    ,STUFF((SELECT ',' + IIF(SS.DisplayName IS NOT NULL,SS.DisplayName,CTSS.TargetingId) 
      FROM CampaignTargeting CTSS 
      LEFT JOIN SubSpecialty SS On CTSS.TargetingId = SS.Id 
      WHERE CTSS.CampaignId =Camp.Id and CTSS.TypeName='SubSpecialty' 
     FOR XML PATH('')), 1, 1, '') AS SubSpecialty 
FROM Campaign Camp 
    LEFT JOIN PointsTransaction PT ON PT.ReferenceId=Camp.Id and PT.Points > 0 
    LEFT JOIN PointUser PU ON PU.Id=PT.PointUserId 
    LEFT JOIN Country PUC on PU.CountryId=PUC.Id 
WHERE Camp.Id='8bd948c9-a597-480b-8772-815f2b31c850' 
GROUP BY Camp.Id,PU.Email,PUC.DisplayName 

我使用MS SQL Server 2012的

+0

那麼爲什麼要使用的東西的語句直接使用國家列如用戶國家@amit – mohan111

回答

0

而不是尋找子,你可以直接使用在國家列UserCountry列值,如果兩者都需要是相同的。希望能幫助到你。

+1

同已經張貼在評論@aparna – mohan111

0

只需使用一個case聲明:

SELECT . . . , 
     (CASE WHEN PUC.DisplayName = 'Singapore' THEN 'Singapore' 
      ELSE STUFF((SELECT ',' + IIF(C.DisplayName IS NOT NULL,C.DisplayName, CTC.TargetingId) 
         FROM CampaignTargeting CTC LEFT JOIN 
           Country C 
           ON CTC.TargetingId = C.Id 
         WHERE CTC.CampaignId = Camp.Id and CTC.TypeName = 'Country' 
         FOR XML PATH('') 
         ), 1, 1, '' 
         ) 
     END) AS Country, 
     . . . 
相關問題