我想从人员表中选择所有不同的名称到VARCHAR
变量。
我编写了一个返回所有名称的查询,如下所示。
DECLARE @pName as VARCHAR(MAX)
SET @pName=''
SELECT @pName += RTRIM(FullName) + ','
FROM Persons
SELECT @pName
当我尝试在FullName
上选择distinct时,SQL Server会抛出异常。
DECLARE @pName as VARCHAR(MAX)
SET @pName=''
SELECT DISTINCT FullName, @pName += RTRIM(FullName) + ','
FROM Persons
SELECT @pName
Msg 141,Level 15,State 1,Line 3
为变量赋值的SELECT语句不能与数据检索操作结合使用。
对变量名称的区别只返回第一个名称
SELECT DISTINCT @pName += RTRIM(FullName) +
FROM Persons
SELECT @pName
如何从SELECT
语句中选择不同的名称到字符串变量?
提前致谢
答案 0 :(得分:1)
您也可以在不使用变量的情况下获得相同的结果。
SELECT STUFF((SELECT distinct ',' + FullName FROM Persons
FOR xml path ('')
), 1, 1, '')
使用变量 - 添加group By
DECLARE @pName as VARCHAR(MAX)
set @pName=''
SELECT @pName+= RTRIM(FullName) + ',' FROM Persons Group By FullName
select @pName
答案 1 :(得分:1)
DECLARE @pName as VARCHAR(MAX)
with cte as(
SELECT DISTINCT FullName FROM Persons
)
Select @pName = coalesce(@pName + ', ', '') + FullName
from cte
select @pName