Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.05.27;
Скачать: CL | DM;

Вниз

агрегирующая функция для строкового типа   Найти похожие ветки 

 
DPetrovich ©   (2002-05-02 15:54) [0]

Подскажите, пожалуйста, как можно написать запрос с группировкой так что бы аггрегирующая функция в нём была для строк .
например, для набора
ID stroka
-------------
1 abc
1 def
2 ghi

написать запрос

select ID, sumstr(stroka) as sumstroka from table1 group by ID

и получить результат
ID sumstroka
-----------------
1 abcdef
2 ghi


 
wicked ©   (2002-05-02 18:36) [1]

имхо никак...


 
dimanchik   (2002-05-03 01:12) [2]

Я не знаю, есть ли в MSSQL User Define Functions?
Если есть, то можно попробовать.


 
sniknik ©   (2002-05-03 08:53) [3]

в MSSQL 2000 вроде есть. и если определить sumstr(ID) с выходом stroka то должно получится. Хотя не пробовал гарантий дать не могу.


 
DPetrovich ©   (2002-05-03 11:50) [4]

User Define Functions есть , я создал такую ...

CREATE FUNCTION [dbo].[aggrstr] (@str1 varchar(250), @str2 varchar(250) )
RETURNS varchar(250) AS
BEGIN
declare @str3 varchar(250)
select @str3=ltrim(rtrim(@str1))+ltrim(rtrim(@str2))
RETURN (@str3)
END


Однако ж на запрос

select [ID], [dbo].[aggrstr](stroka) as sumstroka
from Table1 group by ID

выскакивает ошибка

Column "Table1.stroka" is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.


Значит всё так никак... Печально...


 
Delirium ©   (2002-05-03 13:44) [5]

В MSSQL нельзя создавать агрегатные функции, однако в вашем случае sniknik прав, достаточно создать функцию с входным параметром ID (хотя для универсальности можно передавать имя таблицы, и названия символьного и цифрового полей), а в самой функции организовать курсор и соответствующим образом его обработать.


 
DPetrovich ©   (2002-05-03 14:04) [6]

sniknik, Delirium спасибо большое!
Я сразу не понял какую функцию нужно писать. Если передавать ID и делать через курсор, то действительно получится!




Страницы: 1 вся ветка

Текущий архив: 2002.05.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
7-88659
Slym
2002-01-21 10:12
2002.05.27
Как написать драйвер виртуального диска (no CD, but HDD)


14-88607
lipskiy
2002-04-18 13:52
2002.05.27
Народ! Возник вопрос о необходимости одного поля в UBPFD !


3-88369
Ura
2002-04-29 14:41
2002.05.27
Вложеные запросы


7-88650
Myth
2002-02-27 23:30
2002.05.27
Как из приложения создать другое приложение


3-88331
Jony
2002-04-30 10:09
2002.05.27
На какое событие повесить обработчик для подсчета суммарных знач.