Как отобразить значения столбцов по горизонтали (подряд) с текстом вокруг него? - PullRequest
0 голосов
/ 12 июня 2018

Если у меня есть столбец «Col1» со значениями 1,2,3

col1
****
1
2
3

Как я могу показать их по горизонтали?например,

col1 1,2,3

Или, если возможно, с текстом, например

**'values for col1 are' 1,2,3**

, любые предложения будут высоко оценены :)

1 Ответ

0 голосов
/ 12 июня 2018

Чтобы ответить на ваш конкретный вопрос, вы можете добиться этого с помощью for xml и некоторых небольших хитростей:

declare @t table(Col1 int);
insert into @t values(1),(2),(3);

select 'Values for Col1 are '
        + stuff((select ', ' + cast(Col1 as varchar(5))
                from @t
                for xml path('')
                ),1,2,'');

Это работает, объединяя каждое значение строки в очень минимальную строку xml только с запятой ипробел, ограничивающий каждое значение.Первая запятая и пробел затем удаляются с помощью функции stuff.

В этом случае вывод будет: Values for Col1 are 1, 2, 3


Если у вас есть столбец, который вы хотитечтобы сгруппировать ваши выходные данные, вы можете добавить это в вышеприведенный скрипт следующим образом:

declare @t table(Id int, Val int);
insert into @t values(1,1),(1,2),(1,3),(2,4),(2,2);

with Ids as
(
    select distinct Id
    from @t
)
select 'Values for ID ' + cast(Ids.Id as varchar(5)) + ' are '
        + stuff((select ', ' + cast(t.Val as varchar(5))
                from @t as t
                where Ids.Id = t.Id
                for xml path('')
                ),1,2,'') as Vals
from Ids
order by IDs.Id;

Какие выходные данные:

+-----------------------------+
|             Vals            |
+-----------------------------+
| Values for ID 1 are 1, 2, 3 |
| Values for ID 2 are 4, 2    |
+-----------------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...