Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объединение строк типа text в SQL server  [new]
wikend33
Member

Откуда:
Сообщений: 18
Хорошего часа!

есть таблица table

number cod text
1 te qwe
1 ff asd
1 te zxc
1 ff xcv


надо чтобы дало результат:
number cod text
1 te qwe/zxc
1 ff asd/xcv


то есть:
select number, cod, sum(text) as 'text_new'
from table
group by number, cod



есть одно НО: функция sum для даных типа TEXT неподходят.

вопрос: Как можна написать подругому
7 окт 11, 11:27    [11400464]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
iljy
Member

Откуда:
Сообщений: 8711
wikend33,

ФАК
7 окт 11, 11:28    [11400478]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
wikend33
Member

Откуда:
Сообщений: 18
iljy,

какое именно
7 окт 11, 14:03    [11402059]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
ssaich
Member

Откуда:
Сообщений: 1181
select convert(varchar(100),column1)+convert(varchar(100),column2) as column3 from table
7 окт 11, 14:10    [11402121]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
iljy
Member

Откуда:
Сообщений: 8711
wikend33
iljy,

какое именно

Оно буквально так и называется - Сложение символьных полей в запросе.
7 окт 11, 14:26    [11402280]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
wikend33
Member

Откуда:
Сообщений: 18
ssaich,

а причем здесь convert(varchar(100),column1)+convert(varchar(100),column2) as column3 from table

мне надо строку column2 обэденить саму с собою столька раз сколька будет повторятся строка column1

тоесть
1-ук
1-фы
2-ук
2-ва

выход
1-"ук/фы"
2-"ук/ва"


а у вас будит выход
1ук
1фы
2ук
2ва
7 окт 11, 15:05    [11402645]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
wikend33
Member

Откуда:
Сообщений: 18
iljy,

там нет ответа на мой вопрос

есть токо по сумированию двух столбцов в одной строке
7 окт 11, 15:06    [11402660]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
wikend33
iljy,

там нет ответа на мой вопрос

есть токо по сумированию двух столбцов в одной строке
Т.е. вы даже не удосужились внимательно прочитать, да?
7 окт 11, 15:07    [11402669]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
wikend33,

5 cпособов сделать агрегацию строк в SQL Server'е
http://d2nx.ru/string-aggregation/
7 окт 11, 15:11    [11402712]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
wikend33
Member

Откуда:
Сообщений: 18
trew,

Спасибо, хорошие варианты
7 окт 11, 15:55    [11403209]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
wikend33
Member

Откуда:
Сообщений: 18
мной выбран такой вариант:

USE BASA
GO
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ConcatItems]') AND type in (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION [ConcatItems]
GO
USE BASA
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION ConcatItems(@cod INT)
RETURNS NVARCHAR(100)
AS
BEGIN
DECLARE @ItemList varchar(8000)
SET @ItemList = ''
SELECT @ItemList = @ItemList + ',' + text
FROM Table
WHERE cod = @cod
RETURN SUBSTRING(@ItemList, 2, 100)
END
GO
SELECT number, cod, dbo.ConcatItems(cod) ItemList
FROM Table
GROUP BY number, cod


если есть какие то комментарии конкретно по запросу прошу. Всегда рад пополнить свой запас знаний. (а может и Вам чем то поможет :))
7 окт 11, 16:13    [11403429]     Ответить | Цитировать Сообщить модератору
 Re: Объединение строк типа text в SQL server  [new]
iljy
Member

Откуда:
Сообщений: 8711
wikend33,

вы выбрали, пожалуй, самый граблеемкий способ из всех возможных. Поведение SELECT @Var = ... ORDER BY... недокументировано, и оптимизатор запросто может выбирать только последнюю строку для выполнения присваивания.
7 окт 11, 16:19    [11403491]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить