【发布时间】:2011-05-25 06:43:02
【问题描述】:
我创建了一个表值函数来返回一个逗号分隔的列表,但在列表中只包含不同的值时遇到了问题。我的功能如下:
CREATE FUNCTION [dbo].[clientContactsConcat] ( @clnum INT )
RETURNS NVARCHAR(4000)
AS BEGIN
DECLARE @concat NVARCHAR(4000)
SELECT @concat =COALESCE(@concat, ' ') + clcontact + ', '
FROM dbo.client
WHERE crelated = @clnum
AND NOT clcontact IS NULL
SELECT @concat = SUBSTRING(@concat, 2, LEN(@concat) - 2)
RETURN ( @concat )
END
目前这将列出所有值,当我添加修改 SELECT 为 SELECT DISTINCT @concat =COALESCE(@concat, ' ') + clcontact + ', '... 时,它只会返回 select 返回的第一个结果。
有没有办法在结合 COALESCE 分配给变量时只返回不同的记录?
用于以下记录:
clcontact
---------------------
Mr S Smith
Mrs R Jones
Ms L Morrison
Mrs R Jones
我希望返回以下内容:Mr S Smith, Mrs R Jones, Ms L Morrison。
【问题讨论】:
标签: sql sql-server tsql sql-server-2000 user-defined-functions