6

Я хочу выбрать набор данных в одну строку, но я все же хочу, чтобы каждый элемент был на его собственной строке (я тогда поставлю его в Crystal Reports, и он будет быстрее, чем использование тонны вложенных отчетов.)SQL Server - как объединить строку и добавить строки?

Итак, у меня есть следующие данные:

ID Assessor 
1 Black 
1 Jones 

и я хочу, чтобы запросить его и возвращает одну строку, которая выглядит как:

Black 
Jones 

если я избранная с помощью COALESCE, я могу сделать он разделен запятой или точкой с запятой, но не ограничивается линией:

BEGIN 
    declare @Assessors NVarChar(max) 
    Declare @LineFeed varchar(10) 
    DECLARE @Return varchar(10) 
    Set @LineFeed = char(10) 
    SET @Return = char(13) 

    Select @Assessors = COALESCE(@Assessors + ', ', '') + a.Assessor 
    FROM dbo.Assessment a 
    Where (@ID = a.ID) 

Return @Assessors 
END 

В этом случае функция вернет «Черный, Джонс». Но если бы я изменить строку

Select @Assessors = COALESCE(@Assessors + @Return + @LineFeed, '') + a.Assessor 

возвращается «Черный Джонс» - это не ставит в символ новой строки или возврата, просто пространство.

Я думаю, мне не нужно использовать Coalesce, но я пробовал только стандартное конкатенирование, и это тоже не поместится. Я имею это в функции прямо сейчас, но планирую положить его как часть хранимой процедуры, так что это быстрее.

ответ

7

CHAR(13)+CHAR(10) будет производить разрывы строк, я делаю это все время в производственном коде.

Я запустил ваш код, и он производит разрывы строк в моей системе. В SSMS переключите свое представление на «Результаты в текст» с «Результаты на сетку», и вы увидите разрывы строк.

1

использовать функцию Char для вставки:

Вкладка символ (9)

линия подачи символ (10)

Возврат каретки символ (13)

+1

+1. Это напоминает мне о старых временах манипуляции с VB :-) – 2010-12-09 18:39:11

Смежные вопросы