2016-03-03 43 views
0

我需要在表格的第二列中搜索。我在SQL中使用STUFF函数将所有LastNames与相同的FirstName合并。所以这是我的查询:在SQL函数的结果中搜索

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 

上述查询以我想要的方式工作。但是,当我在一个WHERE条款(ORDER BY前)补充,我得到那个说

无效的列名称LastNames“

我试图这样做有几个方面的错误。我曾尝试通过搜索只是b.LastNameLastName[LastName]LastNamesb.LastNames[LastNames]b.[LastName]b.[LastNames]

,我不知道还有什么我可以尝试得到这个工作。任何帮助深表感谢。

回答

3

一个简单的方法是将你的查询放在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 
+0

这工作得很好。非常感谢你。我会将其标记为答案。 – bds89