Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Задачка сумма Строк .. / 3 сообщений из 3, страница 1 из 1
12.10.2002, 11:09:18
    #32057665
korkin
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка сумма Строк ..
Недавно встретился с задачкой требовалось сделать выборку желательно дним запросом, времени не было решил .. через одно место, может кто знает как решить оптимально ?
Например есть таблица, где отображено состояние на автостоянке ..(пример от балды)
имеем множество машин, с данными: марка, цвет кузова, номер .. (итд)
напр: Волга черн 123
Волга бел 46657
Волга зелен 688576
Жигуль зелен 456457
Получить таблицу где будет марка, а в поле цвет кузова перечисление цветов, (тоесть сумма текстовых полей с определ. разделителем) причем запрос идет из дельфей.

в результате нужен вид после запроса
волга черн&бел&зелен&
жигуль зелен
Может кто встречался, встоенное посмотрел, по работе со строками есть конкатекация но она не подходит.
Мне нужны все цвета в одной ячейке
...
Рейтинг: 0 / 0
12.10.2002, 17:22:50
    #32057691
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка сумма Строк ..
См.здесь
...
Рейтинг: 0 / 0
12.10.2002, 18:04:57
    #32057694
doctor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задачка сумма Строк ..
В лоб
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
if (select object_id('tmp')) is not null
	drop table tmp
GO
Create table tmp(
Mark char( 10 ),
Color char( 10 ),
Number char( 10 )
)
insert into tmp(Mark,Color,Number) values('Волга','черн','123')
insert into tmp(Mark,Color,Number) values('Волга','бел','46657')
insert into tmp(Mark,Color,Number) values('Волга','зелен','688576')
insert into tmp(Mark,Color,Number) values('Жигуль','зелен','456457 ')

if (select object_id('tmp1')) is not null
	drop table tmp1
GO
create table tmp1(
Mark char( 10 ),
Color char( 512 )
)

set nocount on
declare @mark varchar( 32 ), @divider char( 2 ), @col varchar( 512 ),@tmp varchar( 32 )
set @divider=','

declare mark_cur cursor local for select Mark from tmp group by mark
open mark_cur
fetch next from mark_cur into @mark
	while @@fetch_status =  0  Begin
	set @col=''
	 ---
 
	declare color_cur cursor local for
	select color from tmp where mark=@mark
	open color_cur
	fetch next from color_cur into @tmp
	while @@fetch_status =  0  Begin
		set @col = @col + rtrim(@tmp) + @divider
		fetch next from color_cur into @tmp
	end
	close color_cur
	deallocate color_cur
	 ---
 
	insert into tmp1(Mark,Color) values(@mark,@col)
	fetch next from mark_cur into @mark
end
close mark_cur
deallocate mark_cur

set nocount off
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Задачка сумма Строк .. / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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