我的要求是将多行数据显示到单个单元格中。例如,我有一位专门从事多个主题的老师。如何将多行数据显示为逗号分隔的单个单元格
staffid Subjects
-------------------
13 Hindi
13 asd
我想导致以下格式
Hindi, asd
STAFFID为13
要完成这个任务我用下面的代码
declare @output varchar(max)
select @output = COALESCE(@output + ', ', '') + sr.title
from streamsubjects sr
join StaffSubjectAssociation ir on ir.StreamSubjectID=sr.StreamSubjectID
where StaffId = 13
select @output
,从而获得所需的输出我创建了一个用户定义的标量函数,在下面给出
ALTER FUNCTION [dbo].[getSubjectsForStaff]
(
@StaffId int
)
RETURNS varchar
AS
BEGIN
declare @output varchar(max)
select @output = COALESCE(@output + ', ', '') + sr.title
from streamsubjects sr
join StaffSubjectAssociation ir on ir.StreamSubjectID=sr.StreamSubjectID
where StaffId = @StaffId
RETURN @output
END
但是我没有得到想要的结果我只得到第一个字母的主题。任何人都可以告诉我为什么我没有在标量函数中使用相同的代码获得期望的结果。
什么才是正确的解决方案,取得成效? 请帮助我我是这项技术的新成员。
其中R DBMS是为了这个?请添加一个标签来指定您是使用'mysql','postgresql','sql-server','oracle'还是'db2' - 或者其他的东西。 –
问题出在函数的返回参数长度总是必须声明一个具有指定长度的Varchar变量。 –
正如'Arun Gairola'已经提到的那样,你没有指定'varchar'的长度,所以默认'varchar'没有指定的长度只有30个字符,所以字符串将被截断为30个字符。 – Vasily