powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как пронумеровать группы в SELECT?
4 сообщений из 4, страница 1 из 1
Как пронумеровать группы в SELECT?
    #34199172
Tone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток!
Ситуация следущая: в таблице есть повторяющиеся значения. Необходимо пронумеровать каждую группу. Результат должен быть таков:
Иванов 1
Иванов 2
Иванов 3
Смирнов 1
Смирнов 2
Петров 1
Петров 2
Петров 3
Петров 4
...
Рейтинг: 0 / 0
Как пронумеровать группы в SELECT?
    #34200267
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну раз молчат

или туплю
или так

для лисы
Код: 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.
close databases all

create cursor tt (id i, idGroup i, fam c( 10 ))

insert into tt values ( 5 , 3 ,'Петров')
insert into tt values ( 6 , 3 ,'Петров')
insert into tt values ( 7 , 3 ,'Петров')
insert into tt values ( 8 , 3 ,'Петров')
insert into tt values ( 1 , 4 ,'Иванов') 
insert into tt values ( 2 , 4 ,'Иванов')
insert into tt values ( 3 , 2 ,'Смирнов')
insert into tt values ( 4 , 2 ,'Смирнов')

select tt.id,tt.fam,idGroup,  0  as Count ;
from tt  ;
order by tt.idGroup ;
into cursor pp readwrite

local lnidGroup,lnCounter
lnidGroup =  0 
lnCounter =  0 
update pp set Count=idtt(pp.idGroup,@lnidGroup,@lnCounter)

select pp
brow

return 


function idtt(tnId,tnOldId,tnCounter)
	*set step on 
	tnCounter = iif(tnId<>tnOldId, 1 ,tnCounter+ 1 )
	tnOldId   = iif(tnId<>tnOldId,tnId,tnOldId)
	return tnCounter
endif



sql
Код: 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.
if object_id('tempdb..#tt') is not null drop table #tt
if object_id('tempdb..#my') is not null drop table #my

create table #tt (id int, idGroup int, fam varchar( 10 ))

insert into #tt values ( 5 , 3 ,'Петров')
insert into #tt values ( 6 , 3 ,'Петров')
insert into #tt values ( 7 , 3 ,'Петров')
insert into #tt values ( 8 , 3 ,'Петров')
insert into #tt values ( 1 , 4 ,'Иванов') 
insert into #tt values ( 2 , 4 ,'Иванов')
insert into #tt values ( 3 , 2 ,'Смирнов')
insert into #tt values ( 4 , 2 ,'Смирнов')

select *, counter= 0 
   into #my
   from #tt
   order by idGroup 

declare @nCounter int, @nOldGroup int
select @nCounter= 0 , @nOldGroup= 0 

update #my set  @nCounter=case when idGroup<>@nOldGroup then  1  else @nCounter+ 1  end, 
		@nOldGroup=idGroup, 
		counter=@nCounter

select * from #my
...
Рейтинг: 0 / 0
Как пронумеровать группы в SELECT?
    #34200318
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
CREATE cursor test ( f2 c( 10 ))

INSERT INTO test VALUES ('Ivanoff')
INSERT INTO test VALUES ('Ivanoff')

INSERT INTO test VALUES ('Petroff')
INSERT INTO test VALUES ('Petroff')
INSERT INTO test VALUES ('Petroff')

INSERT INTO test VALUES ('Sidoroff')

PRIVATE i, k, OldF2
m.i =  0 
m.k =  0 
m.OldF2 = ''

SELECT nn(f2) as CountF2, * FROM (select * FROM test ORDER BY f2) zz

FUNCTION nn(m.f2)
IF m.k =  0  
	m.k =  1 
	RETURN  0 
ELSE
	IF m.f2 = m.OldF2
		m.i = m.i +  1 
	ELSE 
		m.i =  1 
		m.OldF2 = m.f2
	ENDIF 
	 RETURN m.i
ENDIF  
ENDFUNC 
...
Рейтинг: 0 / 0
Как пронумеровать группы в SELECT?
    #34201716
Tone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спосибо за помощь..
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как пронумеровать группы в SELECT?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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