Текущий архив: 2002.09.26;
Скачать: CL | DM;
ВнизКак реализовать такой запрос Найти похожие ветки
← →
Kalinka (2002-09-04 13:58) [0]В таблице есть 2 поля:
ID int
Name varchar(1)
ID Name
1 a
1 b
2 c
3 d
надо одним запросом (без курсоров) получить выборку:
ID Name
1 a,b
2 c
3 d
← →
3JIA9I CyKA (2002-09-04 14:01) [1]IMHO нет
← →
Shaman_Naydak (2002-09-04 14:29) [2]Мда, мне понравился вопрос! Короче, если у тебя 2000 MSSQL, то можно сделать следующий финт ушами (вроде как без курсоров, так что условие выполнено!):
CREATE FUNCTION dbo.ConcatNames(@ID int) RETURNS varchar(256)
AS
BEGIN
DECLARE @Result varchar(256)
SELECT @Result=COALESCE(@Result+",", "")+Name
FROM Table1
WHERE ID=@ID
RETURN @Result
END
А вот и сам запросик:
SELECT ID, dbo.ConcatNames(ID) FROM Table1
GROUP BY ID
← →
3JIA9I CyKA (2002-09-04 17:07) [3]Да, пожалуй.
← →
wicked (2002-09-04 20:38) [4]
> SELECT @Result=COALESCE(@Result+",", "")+Name
> FROM Table1
> WHERE ID=@ID
хм... чё то я не пойму, как сия конструкция работает?...
← →
Shaman_Naydak (2002-09-04 22:25) [5]
> wicked © (04.09.02 20:38)
Практически как курсор :)
То есть для каждой записи из выборки выполняется
@Result = @Result + "," + Name,
а для первой (так как при этом @Result = NULL),
@Result = Name
И вся недолга
Страницы: 1 вся ветка
Текущий архив: 2002.09.26;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.008 c