2014-07-22 4 views
1

J'effectue une jointure à gauche entre deux tables. En supposant que les deux tables ont des colonnes telles que id, name et sal, j'ai besoin d'obtenir les enregistrements correspondants plus les enregistrements non correspondants. La clé jon est id ici. Pour les enregistrements non correspondants, la colonne sal doit être remplacée par 90000, 90001, 90002 etc. pour chaque ligne. Donc, après l'opération de jointure, je serai en mesure d'identifier les enregistrements non correspondants par la colonne sal. Quelqu'un peut-il m'aider avec la requête? Merci enter image description hereLeft Join Obtenir des enregistrements non correspondants

+3

S'il vous plaît nous montrer ce que vous avez fait jusqu'à présent – DanK

+0

Qu'avez-vous essayé? C'est une jointure assez simple à gauche. Peut-être que vous êtes aux prises avec l'étrange exigence de remplacement? –

Répondre

2
select ta.id,ta.name, 
coalesce(tb.sal, 
    (row_number() over 
    (partition by tb.sal order by tb.id)) + 89999) sal 
from ta left join tb on ta.id = tb.id 
1
select 
    ta.id, 
    ta.name, 
    ISNULL(tb.sal, ROW_NUMBER() over (partition by tb.sal order by ta.id) + 89999) 
from table_a ta 
    left join table_b tb ON tb.id = ta.id 
order by ta.id