我的要求是將多行數據顯示到單個單元格中。例如,我有一位專門從事多個主題的老師。如何將多行數據顯示爲逗號分隔的單個單元格
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