powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение строк
14 сообщений из 14, страница 1 из 1
Объединение строк
    #39652266
gigar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Есть две таблицы
price_list (столбцы номер прейскуранта и id клиента):
price_list_num || price_list_clients_id
11 1
11 3
11 7
12 8

clients(столбцы id клиента и название организации):
clients_id|| clients_name
1 магазин 1
3 магазин 2
7 магазин 3
8 магазин 4

Как сделать объединение строк в столбце название организации через запятую? Пробовал так:
SELECT
price_list.price_list_num
stuff(( select ','+cast(clients_name as nvarchar) as 'data()' from clients
where clients.clients_id=price_list.price_list_clients_id
for xml path('') ),1,1,'')
FROM price_list
group by price_list_num,price_list_clients_id

Но названия организаций указывает верно, но нет группировки.
Спасибо.
...
Рейтинг: 0 / 0
Объединение строк
    #39652286
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gigar,

1. Вложенный запрос (который "FOR XML") формируй по price_list_num, а не по price_list_clients_id.
2. Убири группировку по price_list_clients_id.
...
Рейтинг: 0 / 0
Объединение строк
    #39652302
gigar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Но ведь price_list_num есть только в одной таблице
...
Рейтинг: 0 / 0
Объединение строк
    #39652309
Kopelly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gigar,

Что мешает запихнуть ее во вложенный запрос?
...
Рейтинг: 0 / 0
Объединение строк
    #39652316
gigar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос тогда выводит все существующие организации через запятую, а надо чтобы группировалось по price_list_num
...
Рейтинг: 0 / 0
Объединение строк
    #39652362
gigar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кто-нибудь может помочь?
...
Рейтинг: 0 / 0
Объединение строк
    #39652381
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gigarКто-нибудь может помочь?

Офорите свои запросы через разметку кода.
Добавте табличные переменные с заполнением данных.
Объясните что хотите получить на выходе (в виде таблице).

Шанс получения помощи сильно увеличится!
...
Рейтинг: 0 / 0
Объединение строк
    #39652383
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gigar,

помочь МОГУТ многие. но мало кто ХОЧЕТ помогать.

Вопрос ваш задан сумбурно, тестовые данные приведены в непригодном для использования виде, требуемого результата не приведено вообще.
Вы сделали всё, чтобы отбить желание помогать вам...
...
Рейтинг: 0 / 0
Объединение строк
    #39652388
gigar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
таблица price_list
price_list_numprice_list_clients_id1112

таблица clients
clients_idclients_name1клиент 12клиент 2

Должно получиться :
price_list_numprice_list_name1клиент 1 клиент 2

Запрос:
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT 
price_list.price_list_num,
stuff(( select ','+cast(clients_name as nvarchar) as 'data()' from clients
where clients.clients_id=price_list.price_list_clients_id
for xml path('') ),1,1,'')
FROM price_list
group by price_list_num,price_list_clients_id



Через данный запрос выводятся клиенты, но без группировки, как исправить?
...
Рейтинг: 0 / 0
Объединение строк
    #39652401
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gigar,

Рекомендации по оформлению сообщений в форуме , пункт 6, пример хорошего стиля
...
Рейтинг: 0 / 0
Объединение строк
    #39652472
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так что вам неясно? уберите из gb price_list_clients_id... пордулу с конкатенацией уберите в max
...
Рейтинг: 0 / 0
Объединение строк
    #39652485
gigar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Когда убираю price_list_clients_id из group
пишет ошибку:
Столбец "price_list.price_list_clients_id" недопустим в списке выбора, поскольку он не содержится ни в агрегатной функции, ни в предложении GROUP BY.
...
Рейтинг: 0 / 0
Объединение строк
    #39652502
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На будущее, вот так выглядит правильно оформленный вопрос.
Правильно оформивший вопрос правильный ТСДобрый день, коллеги!
Есть две таблицы:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
DECLARE @price_list TABLE ( price_list_num INT, price_list_clients_id INT )
INSERT INTO @price_list
VALUES
  ( 11, 1 ),
  ( 11, 3 ),
  ( 11, 7 ),
  ( 12, 8 )
;
DECLARE @clients TABLE ( clients_id INT, clients_name VARCHAR(20) )
INSERT INTO @clients
VALUES
  ( 1, 'магазин 1' ),
  ( 3, 'магазин 2' ),
  ( 7, 'магазин 3' ),
  ( 8, 'магазин 4' )
;


Как сделать объединение строк в столбце название организации через запятую? Пробовал так:
Код: sql
1.
...


А так - один из вариантов решения правильно оформленного вопроса.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT 
  pl.price_list_num,
  [clients] = STUFF( ( 
    SELECT 
      [*] = N','+ CONVERT( nvarchar(max), [clients_name] )
    FROM
      @price_list plc
      INNER JOIN @clients cl ON (
            cl.[clients_id] = plc.[price_list_clients_id] )
    WHERE
      plc.[price_list_num] = pl.[price_list_num]
    FOR XML PATH('') ), 1, 1, '' )
FROM
  ( SELECT DISTINCT price_list_num FROM @price_list ) pl
...
Рейтинг: 0 / 0
Объединение строк
    #39652552
LameUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
      
[*] = N','+ CONVERT( nvarchar(max), [clients_name] )


Если вам вдруг интересно - можно заменить на
Код: sql
1.
concat(',',clients_name)
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Объединение строк
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]