2016-03-03 66 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