【问题标题】:How to combine single column value from many row by loop如何逐行组合多行的单列值
【发布时间】:2013-11-23 03:28:40
【问题描述】:

当我运行第一个查询时,我得到了 5 行结果。第 1 行的值是“Day1”,第 2 行是“Day2”等等......之后我想将它组合成一个字符串,如“Day1,Day2,Day3,Day4,Day5”。但是在我运行存储过程之后,我得到了空结果。下面是我的存储过程。我该如何解决?谢谢

SET NOCOUNT ON

Declare @PeriodID nvarchar(50);
Declare @FinalString nvarchar(80);

DECLARE vendor_cursor CURSOR FOR 
SELECT PeriodID FROM PeriodTable c WHERE c.Active=1

OPEN vendor_cursor

FETCH NEXT FROM vendor_cursor 
INTO @PeriodID

WHILE @@FETCH_STATUS = 0
BEGIN
    SELECT @FinalString = @FinalString + @PeriodID + ','

    FETCH NEXT FROM vendor_cursor 
    INTO @PeriodID
END

CLOSE vendor_cursor;
DEALLOCATE vendor_cursor;

print @FinalString 

SET NOCOUNT OFF

【问题讨论】:

    标签: sql-server-2008 stored-procedures sql-server-2008-r2


    【解决方案1】:

    不需要光标。我认为您错过了首先将变量设置为空白字符串,因此它为空,使每一行都为空。这有效:

    declare @ret varchar(8000)
    set @ret = ''
    
    select @ret = @ret+', '+name
    from ImagedApps
    order by name 
    
    -- take off the first comma and space
    select substring(@ret, 3, 8000)
    

    【讨论】:

    • 使用简单的代码可以很好地工作。我想知道为什么我要使用复杂的代码。谢谢
    猜你喜欢
    • 2023-01-25
    • 2017-09-26
    • 2023-03-09
    • 2018-10-08
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 2015-07-12
    • 1970-01-01
    相关资源
    最近更新 更多