Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли написать такой запрос? / 4 сообщений из 4, страница 1 из 1
15.10.2001, 10:45
    #32015331
Ирина
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно ли написать такой запрос?
Нужно, что бы в гупповом запросе по некоторым полям делалаь группировка, в некоторых стояли агрегатные функции(например, SUM), а для одного из текстовых полей выполнялась конкатенация значений (например, что бы все значения, которые попадают в группу выводились через запятую)
Например, имеются ряд строк:
3,4,1, тра-ля-ля
3,4,1, ку-ку
3,5,3, ой
и т. д.
Надо, чтобы результирующий запрос выдавал:
3,4,2, тра-ля-ля, ку-ку
3,5,3, ой
Вот такая вот задачка....
Спасибо всем, кто откликнется))
...
Рейтинг: 0 / 0
15.10.2001, 11:07
    #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
15.10.2001, 12:31
    #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
16.10.2001, 03:00
    #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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Можно ли написать такой запрос? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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