Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подковыристый селект  [new]
#k#k#k#k#
Guest
Доброго дня!
Подскажите, pls, как в сделать так чтобы в выборку, формируемую приведенным ниже способом, включались не только те записи, которые соответствуют where, но и те, значения rec_date которых, отличалось бы от заначения аналогичного поля записей отобранных на основании where не более чем на n секунд?

declare @T Table
(
id int primary key,
param1 int,
param2 int,
param3 int,
rec_date datetime
)

select * from @T
where param1=@param1 and param1=@param2 and param3=@param3
14 окт 05, 14:25    [1969925]     Ответить | Цитировать Сообщить модератору
 Re: Подковыристый селект  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
select t1.* from @T t1 join @T t2 on abs(datediff(s,t1.rec_date,t2.rec_date))<=n
where t2.param1=@param1 and t2.param1=@param2 and t2.param3=@param3
14 окт 05, 14:33    [1969997]     Ответить | Цитировать Сообщить модератору
 Re: Подковыристый селект  [new]
#k#k#k#k#
Guest
долго - жуть
14 окт 05, 14:45    [1970100]     Ответить | Цитировать Сообщить модератору
 Re: Подковыристый селект  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
ставим индекс по rec_date
тогда может помочь
select t1.* from @T t1 join @T t2 on 
 t1.rec_date between dateadd(s,-n,t2.rec_date) and dateadd(s,n,t2.rec_date)
where t2.param1=@param1 and t2.param1=@param2 and t2.param3=@param3
хотя не сильно
а запрос
select * from @T
where param1=@param1 and param1=@param2 and param3=@param3
быстро отрабатывает?
14 окт 05, 14:49    [1970131]     Ответить | Цитировать Сообщить модератору
 Re: Подковыристый селект  [new]
#k#k#k#k#
Guest
заметно
14 окт 05, 14:52    [1970165]     Ответить | Цитировать Сообщить модератору
 Re: Подковыристый селект  [new]
#k#k#k#k#
Guest
И вот исчо момент пикантный

Server: Msg 535, Level 16, State 1, Line 1
Difference of two datetime columns caused overflow at runtime.
14 окт 05, 14:53    [1970178]     Ответить | Цитировать Сообщить модератору
 Re: Подковыристый селект  [new]
Smirnov Anton
Member

Откуда: Н.Новгород
Сообщений: 3220
#k#k#k#k#
заметно

што заметно?
автор
Server: Msg 535, Level 16, State 1, Line 1
Difference of two datetime columns caused overflow at runtime.

а это на каком запросе?
14 окт 05, 14:56    [1970200]     Ответить | Цитировать Сообщить модератору
 Re: Подковыристый селект  [new]
Berg
Member

Откуда: Кр-ск
Сообщений: 3480
#k#k#k#k#
И вот исчо момент пикантный

Server: Msg 535, Level 16, State 1, Line 1
Difference of two datetime columns caused overflow at runtime.


Что пикантного? Попробуйте получить, например, в интовом типе разницу в милисекундах между началом времен и текущей датой...

 select datediff (ms, 0 , GETDATE()) 
14 окт 05, 14:58    [1970215]     Ответить | Цитировать Сообщить модератору
 Re: Подковыристый селект  [new]
Easygoing
Member

Откуда: SPB.RU
Сообщений: 560
SELECT T2.*
(select * from @T
where param1=@param1 and param1=@param2 and param3=@param3
) T1 INNER JOIN @T T2 ON T2.rec_Date BETWEEN T1.rec_Date  AND DATEADD(ms,1,T1.rec_Date )
14 окт 05, 15:14    [1970333]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить