Ich habe zwei Tabellen und die Werte wie dieseVergleichen Sie die beiden Tabellen und aktualisiert den Wert in einer Spalte Flag
`create table InputLocationTable(SKUID int,InputLocations varchar(100),Flag varchar(100))
create table Location(SKUID int,Locations varchar(100))
insert into InputLocationTable(SKUID,InputLocations) values(11,'Loc1, Loc2, Loc3, Loc4, Loc5, Loc6')
insert into InputLocationTable(SKUID,InputLocations) values(12,'Loc1, Loc2')
insert into InputLocationTable(SKUID,InputLocations) values(13,'Loc4,Loc5')
insert into Location(SKUID,Locations) values(11,'Loc3')
insert into Location(SKUID,Locations) values(11,'Loc4')
insert into Location(SKUID,Locations) values(11,'Loc5')
insert into Location(SKUID,Locations) values(11,'Loc7')
insert into Location(SKUID,Locations) values(12,'Loc10')
insert into Location(SKUID,Locations) values(12,'Loc1')
insert into Location(SKUID,Locations) values(12,'Loc5')
insert into Location(SKUID,Locations) values(13,'Loc4')
insert into Location(SKUID,Locations) values(13,'Loc2')
insert into Location(SKUID,Locations) values(13,'Loc2')`
Ich brauche die Ausgabe zu erhalten, indem SKUID die von jeder Tabelle und Aktualisieren Sie den Wert in Spalte Flag passend wie im Screenshot zu sehen, ich habe so etwas wie dieser Code versucht
`SELECT STUFF((select ','+ Data.C1
FROM
(select
n.r.value('.', 'varchar(50)') AS C1
from InputLocation as T
cross apply (select cast('<r>'+replace(replace(Location,'&','&'), ',', '</r><r>')+'</r>' as xml)) as S(XMLCol)
cross apply S.XMLCol.nodes('r') as n(r)) DATA
WHERE data.C1 NOT IN (SELECT Location
FROM Location) for xml path('')),1,1,'') As Output`
aber nicht davon überzeugt, mit Ausgang und ich versuche auch xml Pfad Code zu vermeiden, da die Leistung für diesen Code nicht den ersten Platz ist, muss ich den Ausgang wie der folgende Screenshot. Jede Hilfe würde sehr geschätzt werden.
Sie damit sagen, dass Update Die Flagge Spalte, in INputLocation nicht IN Location Tabelle Standort scolumn –
Ich bin nicht sicher, ob ich Ihre Frage richtig verstanden habe ... Sie sagten, dass Sie mit XML eine Lösung finden verwaltet Weg aber würde lieber vermeiden, das zu verwenden. Nun, "FOR XML PATH" ist afaik die beste und empfohlene Lösung für String-Verkettungen bis SQL Server 2016. 2016 hat MSFT die Funktion STRING_AGG hinzugefügt. In SQL Server 2008 können Sie eine benutzerdefinierte Assembly als Alternative verwenden. Aber das hat seine Schattenseiten. Sehen Sie sich https://www.sqlshack.com/string-concatenation-done-right-part-2-an-effective-technique/ an. –
Hallo, danke für die Wiederholung, ich vermied einfach mit xml Pfad, das heißt nicht, dass ich nicht verwenden sollte und alle, ich benutze SQL Server 2014, also bitte schlagen Sie mir besser Code oder Antwort für diese – Karthik