search innerhalb der Ergebnisse einer SQL-function

Ich muss in der zweiten Spalte meines Tisches suchen. Ich verwende die STUFF-function in SQL, um alle LastNames mit demselben FirstName zu kombinieren. Also hier ist meine Frage:

 SELECT a.FirstName, STUFF( (SELECT N', ' + b.LastName FROM NameChange b WHERE a.NameID = b.NameID FOR XML PATH (''),TYPE).value('text()[1]','nvarchar(max)'),1,2,N'') AS 'LastNames' FROM Names a ORDER BY a.FirstName 

Die obige Abfrage funktioniert genau so, wie ich es will. Aber wenn ich eine WHERE Klausel (vor dem ORDER BY ) hinzufüge, bekomme ich einen Fehler, der sagt

Ungültiger Spaltenname 'LastNames'

Ich habe versucht, dies zu tun, mehrere Möglichkeiten. Ich habe versucht, nur durch b.LastName , LastName , [LastName] , LastNames , b.LastNames , [LastNames] , b.[LastName] und b.[LastNames]

Ich weiß nicht, was ich sonst noch ausprobieren kann. Jede Hilfe wird sehr geschätzt.

Ein einfacher path, dies zu tun ist Ihre Anfrage in einem cte.

 with MyNames as ( SELECT a.FirstName, STUFF( (SELECT N', ' + b.LastName FROM NameChange b WHERE a.NameID = b.NameID FOR XML PATH (''),TYPE).value('text()[1]','nvarchar(max)'),1,2,N'') AS 'LastNames' FROM Names a ) select * from MyNames n where LastNames = 'Some Name' ORDER BY n.FirstName