我有一个表(EMP
)我知道使用该COALESCE
函数我们可以通过这种方式获取任何列的值
23,23,45,34
SELECT OfferID FROM Emp where EmpID= 23
Run Code Online (Sandbox Code Playgroud)
但我没有得到实现这一点的语法
解决这个问题的任何帮助都会很棒.
dkn*_*ack 43
我COALESCE
在过去也使用过这个,但我建议另一种方法,因为你不需要变量.使用该T-SQL
功能STUFF
完成此操作.
SELECT STUFF((
select ','+ cast(OfferID as nvarchar(255))
from Emp b
WHERE a.EmpID= b.EmpID
FOR XML PATH('')
),1,1,'') AS COLUMN2
FROM Emp a
GROUP BY a.EmpID
Run Code Online (Sandbox Code Playgroud)
Mar*_*ith 40
DECLARE @List VARCHAR(8000)
SELECT @List = COALESCE(@List + ',', '') + CAST(OfferID AS VARCHAR)
FROM Emp
WHERE EmpID = 23
SELECT @List
Run Code Online (Sandbox Code Playgroud)
这种聚合连接方法不能保证有效.如果您至少使用SQL Server 2005 XML PATH
或CLR聚合是首选.
关于这个主题的权威文章是Transact-SQL中的Concatenating Row Values
归档时间: |
|
查看次数: |
77011 次 |
最近记录: |