﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / SQL Server / Базы данных  / Нумерация групп и записей в группе. / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Sat, 22 Nov 2008 03:17:58 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: Нумерация групп и записей в группе.</title><link>http://www.relib.com/forums/Topic909425-22-1.aspx</link><description>Вобщем сделал в цикле через While. Конечно это не один запрос, но зато работает. :))</description><pubDate>Tue, 09 Jan 2007 12:02:14 GMT</pubDate><dc:creator>slamer</dc:creator></item><item><title>Нумерация групп и записей в группе.</title><link>http://www.relib.com/forums/Topic909425-22-1.aspx</link><description>Добрый день, уважаемые мастера T-SQL программирования!&lt;/P&gt;&lt;P&gt;Буду премного благодарен, если кто-то поможет мне решить эту проблему. Есть набор записей (таблица с ключевым полем), в котором кроме прочих есть два поля, в которые запросом на обновление заносятся значения соответственно - порядкового номера записи в группе (группировка записей из этой же таблицы по 3 другим полям) и порядковый номер самой группы. Пронумеровать записи в группах у меня вроде получилось, а вот проставить нумерацию групп ну никак не получается.&lt;/P&gt;&lt;P&gt;Вобщем чтобы сильно Вас не путать лучше приведу код скрипта ( файл почемуто не прицепился, страничка не открывается ):&lt;/P&gt;&lt;P&gt;[code]&lt;/P&gt;&lt;P&gt;Create table #Tmp_table&lt;BR&gt;(&lt;BR&gt; id_r  int identity ( 1, 1 ), -- Ключевое поле временной таблицы&lt;BR&gt; f_str  int,&lt;BR&gt; f_kat  int,&lt;BR&gt; f_typ  int,&lt;BR&gt; f_nam  varchar(10),&lt;BR&gt; f_num  int,&lt;BR&gt; f_ng  int&lt;BR&gt;)&lt;/P&gt;&lt;P&gt;-- Первая группа&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 1, 1, 1, 'ABCD123' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 1, 1, 1, 'ABCD333' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 1, 1, 1, 'ABCD4454' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 1, 2, 1, 'ABCD234rf' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 1, 2, 1, 'AB3421`df' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 1, 1, 3, 'sdfgsd34' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 1, 1, 3, '123ref' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 1, 2, 3, 'asertfgh' )&lt;/P&gt;&lt;P&gt;-- Вторая группа&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 2, 1, 1, 'ABCD123' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 2, 1, 1, 'ABCD333' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 2, 2, 1, 'ABCD4454' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 2, 2, 1, 'ABCD234rf' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 2, 2, 1, 'AB3421`df' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 2, 1, 3, 'sdfgsd34' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;/P&gt;&lt;P&gt;-- Третья группа&lt;BR&gt;values ( 3, 1, 1, '123ref' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 3, 1, 1, 'asertfgh' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 3, 1, 1, 'ABCD123' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 3, 1, 1, 'ABCD333' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 3, 2, 1, 'ABCD4454' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 3, 1, 1, 'ABCD234rf' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 3, 1, 3, 'AB3421`df' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 3, 1, 3, 'sdfgsd34' )&lt;BR&gt;Insert Into #Tmp_table ( f_str, f_kat, f_typ, f_nam )&lt;BR&gt;values ( 3, 2, 3, '123ref' )&lt;/P&gt;&lt;P&gt;Select * From #Tmp_table&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------&lt;BR&gt;/*&lt;BR&gt; Проставляем номер позиций (Нумерация работает, вопрос - можно ли в этом же запросе нумеровать группы. &lt;BR&gt; Т.е. чтобы в поле f_ng было примерно следующее - 1 &lt;BR&gt;        1&lt;BR&gt;        1&lt;BR&gt;        2&lt;BR&gt;        2&lt;BR&gt;        3&lt;BR&gt;        3 и т.д. ?)&lt;BR&gt;*/&lt;BR&gt;-----------------------------------------------------------------------------------------&lt;BR&gt;Update #Tmp_table Set #Tmp_table.f_num = rank&lt;BR&gt;From&lt;BR&gt;(&lt;BR&gt; select &lt;BR&gt;  test_1.f_str,&lt;BR&gt;  test_1.f_kat,&lt;BR&gt;  test_1.f_typ,&lt;BR&gt;  count(test_2.id_r) as rank,&lt;BR&gt;  test_1.id_r&lt;BR&gt; from &lt;BR&gt;  #Tmp_table as test_1 &lt;BR&gt;  inner join #Tmp_table as test_2 on ( test_1.id_r &amp;gt;= test_2.id_r )&lt;BR&gt;          and &lt;BR&gt;          ( test_1.f_str= test_2.f_str )&lt;BR&gt;          and&lt;BR&gt;          ( test_1.f_kat = test_2.f_kat )&lt;BR&gt;          and&lt;BR&gt;          ( test_1.f_typ = test_2.f_typ )&lt;BR&gt; group by test_1.f_str, test_1.f_kat, test_1.f_typ, test_1.id_r&lt;BR&gt;) as t1&lt;BR&gt;Where #Tmp_table.id_r=t1.id_r&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;Select * From #Tmp_table&lt;/P&gt;&lt;P&gt;Drop Table #Tmp_table&lt;/P&gt;&lt;P&gt;[/code]&lt;/P&gt;&lt;P&gt;Заранее большое спасибо за помощь!</description><pubDate>Fri, 05 Jan 2007 18:08:27 GMT</pubDate><dc:creator>slamer</dc:creator></item></channel></rss>