我需要在表格的第二列内搜索。我在SQL中使用STUFF函数将所有LastNames
与相同的FirstName
组合在一起。所以这是我的疑问:
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.LastName
,LastName
,[LastName]
,LastNames
,b.LastNames
,[LastNames]
,b.[LastName]
和{ {1}}
我不知道还有什么可以尝试让它发挥作用。非常感谢任何帮助。
答案 0 :(得分:4)
执行此操作的一种简单方法是将查询放入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