-1
votes

Comment mettre à jour un statut de colonne dans une autre table du résultat de la requête précédente

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 DW-STG code> Il existe des colonnes ID code>, TicketNumber code> et annule_yn code>. p>

Ce que je veux faire, c'est de mettre à jour le statut d'un 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>

ci-dessous est le code de requête qui sortira ID et TerecketNumber. 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


1 commentaires

Veuillez fournir des données d'échantillonnage et des résultats souhaités.


4 Réponses :


0
votes

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
)


0 commentaires

0
votes

Je recommanderais Fusionner . Voir l'exemple suivant: xxx

résultat: xxx


0 commentaires

0
votes

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;


1 commentaires

Cette réponse est plus facile à comprendre et à compléter mes besoins. Merci



0
votes

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


0 commentaires