Блин, ну совсем я запарился уже....

ipzhe
Дата: 16.12.2002 17:43:12
Подскажите пожалуйста, как решить вот такую проблемму.
Есть Таблица, отсортированная по одному из полей(Дата). нужно выбрать строку, идущую вслед за заданной. Есть identity текущей строки. Значения дат могут повторятся.
mahoune
Дата: 16.12.2002 17:45:26
Понумеруй все строки с помощью переменной! Вытяни нужню запись и следующую за ней, возми identity нужной записи и выводи ее!
jimmers
Дата: 16.12.2002 18:02:25
Пример с данными можно?
AAron
Дата: 16.12.2002 18:07:03
может что-то типа
declare @rid int


set @rid = 4

create table #ta (rid int identity(1, 1), date datetime)

insert into #ta (date) values ('2001-01-01')
insert into #ta (date) values ('2001-01-03')
insert into #ta (date) values ('2001-01-06')
insert into #ta (date) values ('2001-01-08')
insert into #ta (date) values ('2001-01-08')
insert into #ta (date) values ('2001-01-06')
insert into #ta (date) values ('2001-01-08')
insert into #ta (date) values ('2001-01-08')
insert into #ta (date) values ('2001-01-30')
insert into #ta (date) values ('2001-01-01')
insert into #ta (date) values ('2001-01-02')

select * from #ta order by date

select top 1 t1.rid, t1.date
from #ta as t1
inner join #ta as t2 on t1.date > t2.date and t2.rid = @rid
order by t2.date

drop table #ta
ipzhe
Дата: 16.12.2002 18:15:05
to jimmers

Id_Pay Date Deb Cred Rasch
377 2002-12-11 00:00:00.000 33.5 NULL NULL
379 2002-12-11 00:00:00.000 890.079 NULL NULL
371 2002-12-11 00:00:00.000 42.680 NULL NULL
380 2002-12-11 00:00:00.000 150.900 NULL NULL
389 2002-12-13 00:00:00.000 66.0 25.0 248.90
331 2002-12-13 00:00:00.000 325.0 52.0 521.90
394 2002-12-13 00:00:00.000 23.44 623.0 -391.649
jimmers
Дата: 16.12.2002 18:22:46
Так, данные есть.
Теперь что на входе и что на выходе.
DmitryV
Дата: 16.12.2002 18:34:23
А по какому критерию определять следующую строку? Физически следующую? Или есть дополнительная сортировка, например, по ID_Pay? Тогда можно так (наверное):
SELECT TOP 1 * FROM Table1

WHERE ID_Pay>@CurrentID
and [Date]>=(SELECT [Date] FROM Table1 WHERE ID_Pay=@CurrentID)


Или нужно что-то другое?

Удачи
MiCe
Дата: 17.12.2002 10:39:43
create table #origin

(Id_Pay int not null, -- твой identity

[Date] datetime,
Deb decimal(18,3),
Cred decimal(18,3),
Rasch decimal(18,3))
insert #origin values(377,'20021211',33.5,NULL, NULL)
insert #origin values(379,'20021211',890.079,NULL,NULL)
insert #origin values(371,'20021211',42.68,NULL,NULL)
insert #origin values(380,'20021211',150.9,NULL,NULL)
insert #origin values(389,'20021213',66.0,25.0,248.90)
insert #origin values(331,'20021213',325.0,52.0,521.90)
insert #origin values(394,'20021213',23.44,623.0,-391.649)

-- используем функцию IDENTITY для нумерации выборки во временную таблицу

select IDENTITY(int,1,1) as temp_id ,* into #temp from #origin
select * from #temp