Je travaille dans SQL Server 2014. La requête que je exécute des résultats 2 colonnes, l'une est ID et une autre numéro de billet.
maintenant sur une autre table qui est Ce que je veux faire, c'est de mettre à jour le statut d'un ci-dessous est le code de requête qui sortira ID et TerecketNumber. P> DW-STG code> Il existe des colonnes ID code>, TicketNumber code> et annule_yn code>. p> Collaboln_yn code> sur Y code> pour ces numéros de billets renvoyés par la requête que j'ai couru Plus tôt, qui renvoie ID code> et TicketNumber code>. p> ID Ticket Cancel_YN
---------------------------------------------------
1 123 Y (previously by default it is N)
2 456 Y (previously by default it is N)
3 745 N
4 Réponses :
Si la requête que vous avez postée donne le résultat souhaitée, vous pouvez l'utiliser dans votre relevé de mise à jour
avec la seule différence qu'il doit renvoyer uniquement la colonne dw_sbr_fares_fafh.ticketnumber code>: update DW-STG
set cancel_YN = 'y'
where Ticketnumber IN (
select DW_SBR_FARES_FAFH.Ticketnumber
from STG2_SBR_PNR_HEADER
JOIN DW_SBR_FARES_FAFH ON STG2_SBR_PNR_HEADER.HID=DW_SBR_FARES_FAFH.HID
except
select STG2_SBR_FARES_FAFH.HID,STG2_SBR_FARES_FAFH.Ticketnumber from
STG2_SBR_FARES_FAFH
)
Je recommanderais Fusionner . Voir l'exemple suivant: résultat: p>
Vous pouvez mettre cette requête dans un CTE.
Ensuite, dans la mise à jour, rejoignez la table des numéros de billets uniques.
WITH CTE AS ( SELECT fafh.Ticketnumber, fafh.HID FROM DW_SBR_FARES_FAFH fafh JOIN STG2_SBR_PNR_HEADER head ON head.HID = fafh.HID EXCEPT SELECT Ticketnumber, HID FROM STG2_SBR_FARES_FAFH ) UPDATE t SET cancel_YN = 'Y' FROM DW-STG t JOIN (SELECT DISTINCT Ticketnumber FROM CTE) q ON q.Ticketnumber = t.Ticketnumber;
Cette réponse est plus facile à comprendre et à compléter mes besoins. Merci
Vous pouvez essayer ceci en utilisant interner rejoindre code> de la manière suivante. create table firstResult (ID int, Ticketnumber int)
insert into firstResult values (1, 123), (2, 456)
create table secondResult (ID int, Ticketnumber int, Cancel_YN char(1) default 'N')
insert into secondResult (Id, TicketNumber) values(1, 123),(2, 456),(3,745)
update s
set s.Cancel_YN = 'Y'
from firstResult as f
inner join secondResult s on s.Ticketnumber = f.TicketNumber
select * from secondResult
Veuillez fournir des données d'échantillonnage et des résultats souhaités.