我有一个表(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 次 |
| 最近记录: |