SQL – Kopieren bestimmter Zeilen in einer Tabelle in die gleiche Tabelle und Ändern ihrer Werte

Ich habe die folgende Tabelle in Microsoft SQL server namens CustomerInfo

VOR

CustomerInfo Type CustomerId CustParameter Value Inbound StateLOCAL LastName Johnson Inbound StateLOCAL ExchangeCode ALI Inbound StateLOCAL IsPriority False Inbound CityLOCAL LastName Rogers Inbound CityLOCAL ExchangeCode RAR Inbound CityLOCAL IsPriority True Inbound TownBOUND LastName Brown Inbound TownBOUND ExchangeCode JSP Inbound TownBOUND IsPriority True 

Und ich muss es an die folgende Tabelle bringen

NACH

 CustomerInfo Type CustomerId CustParameter Value Inbound StateLOCAL LastName Johnson Inbound StateLOCAL ExchangeCode ALI Inbound StateLOCAL IsPriority False Inbound CityLOCAL LastName Rogers Inbound CityLOCAL ExchangeCode RAR Inbound CityLOCAL IsPriority True Inbound TownBOUND LastName Brown Inbound TownBOUND ExchangeCode JSP Inbound TownBOUND IsPriority True Inbound CityBORDER LastName Rogers Inbound CityBORDER ExchangeCode RAR Inbound CityBORDER IsPriority True 

Der Tisch ist viel größer und ich brauche den folgenden:

  • Wenn die Spalte CustomerId das Wort 'LOCAL' enthält und wenn die Spalte CustParameter das Wort 'IsPriority' enthält und die Spalte Wert das Wort 'True' enthält,
  • Dann müssen die 3 datasätze, die das gleiche CustomerId haben, wieder in die gleiche Tabelle kopiert werden, ABER das Wort LOCAL in der CustomerId Spalte muss in das Wort BORDER geändert werden, so zB CityLOCAL wird CityBORDER, wenn es kopiert wird.

   

Versuchen Sie diese SQL.

step1: unterhalb von SQL ausführen. Ergebnis ist OK.

 select Type, REPLACE(ci.CustomerID, 'LOCAL', 'BORDER'), CustParameter, Value from customerInfo where customerId in ( select distinct CustomerId from customer_info where CustomerId like "%LOCAL%" and CustParameter = "IsPriority" and Value= "True" 

)

step2: unter SQL ausführen. fügen Sie diesen datasatz in die Tabelle ein.

 INSERT INTO customerInfo (Type, CustomerId, CustParameter, Value) select Type, REPLACE(ci.CustomerID, 'LOCAL', 'BORDER'), CustParameter, Value from customerInfo where customerId in ( select distinct CustomerId from customer_info where CustomerId like "%LOCAL%" and CustParameter = "IsPriority" and Value= "True" ) 

Vielen Dank.

 UPDATE ci SET ci.CustomerID = REPLACE(ci.CustomerID, 'LOCAL', 'BORDER') FROM CustomerInfo ci WHERE ci.CustomerID IN ( SELECT DISTINCT ci2.CustomerID WHERE ci2.CustomerID LIKE '%LOCAL%' AND ci2.CustParameter LIKE '%IsPriority%' AND ci2.Value = 'True' )