J'ai deux tables: PermanentTable
et TemporaryTable
.
Il y a 7 colonnes dans le TemporaryTable
:
Id, CreditInvoiceDate, CreditInvoiceNumber, CreditInvoiceAmount, CreditDeniedDate, CreditDeniedReasonId, CreditDeniedNotes.
Toutes ces colonnes sont également dans le PermanentTable
et ont déjà été remplies si l' Id
correspondait à un dans le TemporaryTable
.
J'ai une requête qui returnne les Ids dans le TemporaryTable
et une colonne qui affiche un «Y» est l'Id a été apparié dans le PermanentTable
et un «N» si ce n'était pas. Si elles ont été associées, CreditInvoiceDate
, CreditInvoiceNumber
et CreditInvoiceAmount
ou CreditDeniedDate
, CreditDeniedReasonId
et CreditDeniedNotes
seront complétés avec des données (mais pas toutes les 6). Une colonne appelée AuthNumber
sera également renseignée si elle correspond. Ma requête les renvoie.
Question
Select t.Id, p.AuthNumber, p.CreditInvoiceDate, p.CreditInvoiceNumber, p.CreditInvoiceAmount, p.CreditDeniedDate, p.CreditDeniedReasonId, p.CreditDeniedNotes, case when p.Id is not null then 'Y' else 'N' end as Matched from TemporaryCsvUpload t left join PermanentTable p on p.Id = t.Id
Résultat
C'est le point que je suis arrivé à, mais voici où j'essaie d'aller:
Je voudrais ajuster cette requête afin que je puisse me débarrasser de la colonne Matched à la fin et ai plutôt 2 colonnes d'identification. Un contenant les Ids dans le TemporaryTable
qui correspondait dans le PermanentTable
et un contenant ceux qui ne l'ont pas fait. Si les ID ne correspondent pas, aucun des autres champs ne sera rempli, il n'est donc pas nécessaire de vérifier.
Faites moi savoir si vous avez des questions. Merci!
la requête ci-dessous devrait vous aider:
Select case when p.Id is not null then t.Id else null end as tempMatchedId, case when p.Id is null then t.Id else null end as tempUnmatchedId, case when p.Id is not null then p.AuthNumber else null end as AuthNumber, case when p.Id is not null then p.CreditInvoiceDate else null end as CreditInvoiceDate, case when p.Id is not null then p.CreditInvoiceNumber else null end as CreditInvoiceNumber, case when p.Id is not null then p.CreditInvoiceAmount else null end as CreditInvoiceAmount, case when p.Id is not null then p.CreditDeniedDate else null end as CreditDeniedDate, case when p.Id is not null then p.CreditDeniedReasonId else null end as CreditDeniedReasonId, case when p.Id is not null then p.CreditDeniedNotes else null end as CreditDeniedNotes from TemporaryCsvUpload t left join PermanentTable p on p.Id = t.Id
Ce qui suit devrait fonctionner aussi bien que l'autre réponse, et être beaucoup plus facile à lire:
Select p.Id as tempMatchedId, case when p.Id is null then t.Id end as tempUnmatchedId, p.AuthNumber, p.CreditInvoiceDate, p.CreditInvoiceNumber, p.CreditInvoiceAmount, p.CreditDeniedDate, p.CreditDeniedReasonId, p.CreditDeniedNotes from TemporaryCsvUpload t left join PermanentTable p on p.Id = t.Id