2011-09-11 5 views
1

Je veux savoir comment je peux ajouter une colonne supplémentaire à une jointure en fonction d'une condition. J'essaie de faire quelque chose comme les grandes lignes ci-dessous. Si un endroit est un comté alors je veux toutes les propriétés dans le comté; Cependant, si l'emplacement est une ville, je veux les propriétés dans cette ville. Malheureusement les codes de villes peuvent être dupliqués entre les comtés, donc je dois filtrer par code de comté et de ville.Jointure SQL sur une colonne supplémentaire basée sur une condition

SELECT DISTINCT [PropertyID] 
FROM PropertyLocations 
LEFT JOIN [dbo].[Locations] 
    ON [PropertyLocations].[CountyCode] = [Locations].[CountyCode] 
-- IF/CASE locations.[LocationLevel] is 6 then 
-- i want to join on a second column as well 
-- [PropertyLocations].[CountySubCode] = [Locations].[SubCountyCode] 
WHERE [LocationName] = 'county/town name' 
AND [PropertyLocations].[CountyCode] = [Locations].[CountyCode] 
order BY [PropertyID] 

Répondre

4

Est-ce ce que vous cherchez?

LEFT JOIN [dbo].[Locations] 
    ON [PropertyLocations].[CountyCode] = [Locations].[CountyCode] 
     AND ([Locations].[LocationLevel] <> 6 
       OR [PropertyLocations].[CountySubCode] = 
        [Locations].[SubCountyCode] 
      ) 
+0

Merci Martin c'était exactement ce dont j'avais besoin. – Dave

+0

@Martin: Y aura-t-il un problème de performance avec cette approche? Surtout si le nombre d'enregistrements est plus. – Novice

Questions connexes