powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли написать такой запрос?
4 сообщений из 4, страница 1 из 1
Можно ли написать такой запрос?
    #32015331
Ирина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно, что бы в гупповом запросе по некоторым полям делалаь группировка, в некоторых стояли агрегатные функции(например, SUM), а для одного из текстовых полей выполнялась конкатенация значений (например, что бы все значения, которые попадают в группу выводились через запятую)
Например, имеются ряд строк:
3,4,1, тра-ля-ля
3,4,1, ку-ку
3,5,3, ой
и т. д.
Надо, чтобы результирующий запрос выдавал:
3,4,2, тра-ля-ля, ку-ку
3,5,3, ой
Вот такая вот задачка....
Спасибо всем, кто откликнется))
...
Рейтинг: 0 / 0
Можно ли написать такой запрос?
    #32015337
George
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в агрегат невозможно засунуть поле символьного типа,
поэтому открываешь курсор по запросу

select f1,f2,f3,f4
from ..
ORDER BY f1,f2,f3

а в цикле собираешь результирующую строку по полю f4, следя за изменением предыдущих полей

Если же тип поля f4 - численный, то проще некуда:

select sum(f4)
from ...
where ...
group by f1,f2,f3
...
Рейтинг: 0 / 0
Можно ли написать такой запрос?
    #32015352
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитайте, где-то там в конце есть нормальное решение(правда для 2000-го)

http://www.sql.ru/cgi-bin/UltraBoard/UltraBoard.pl?Action=ShowPost&Board=mssql&Post=1181&Idle=365&Sort=0&Order=Descend&Page=0&Session=
...
Рейтинг: 0 / 0
Можно ли написать такой запрос?
    #32015375
Slava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот одно

CREATE FUNCTION Test
(@where int)
RETURNS varchar(100)
AS
BEGIN
declare @string varchar(100) set @string = ''
select @string = @string + s + ', ' from tmp where su = @where
RETURN @string
END
GO

create table tmp (su int, s varchar(10))
declare @s varchar(10)
insert into tmp select 1, 'a'
insert into tmp select 1, 'b'
insert into tmp select 2, 'b'
insert into tmp select 2, 'c'
insert into tmp select 2, 'd'
declare @tmp1 table (su1 int, su2 int, string varchar(100))
declare @string varchar(100) set @string = ''
insert into @tmp1 select su, (select sum(su) from tmp where su = t1.su), '' from tmp t1
update @tmp1 set string = dbo.Test(su) from tmp t where t.su = su1
select su2, string from @tmp1 group by su2, string
drop table tmp
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли написать такой запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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