Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите про TOP @n  [new]
dmtalex
Member

Откуда:
Сообщений: 17
Hello!

Есть таблица с датами рабочих дней сентября 2012 года
Поле Date
01.09.2012
02.09.2012
...
28.09.2012

Хочу найти пятый рабочий день.
Пишу
select TOP 5 * from workdays where Date >= '01.09.2012'

Возвращает таблицу из 5 строк с 03.09.2012 .. 07.09.2012

А если пишу так
select MAX(DATE) from (select TOP 5 * from workdays where Date >= '01.09.2012') t1

Возвращает 28.09.2012

В чем ошибка, помогите пожалуйста.

Спасибо.
5 сен 12, 16:24    [13119002]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
Glory
Member

Откуда:
Сообщений: 104751
dmtalex
В чем ошибка, помогите пожалуйста.

В логике
5 сен 12, 16:25    [13119006]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
top 5 без order by = пять рандомных записей.
5 сен 12, 16:27    [13119023]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
aleks2
Guest
select TOP 5 * from workdays 
where Date >= '01.09.2012' and (row_number() over(order by Date desc) - 1)%5 = 0
5 сен 12, 16:31    [13119064]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
aleks2
Guest
Пардон

select * from workdays 
where Date >= '01.09.2012' and (row_number() over(order by Date desc) - 1) = 5
5 сен 12, 16:33    [13119087]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
dmtalex
Member

Откуда:
Сообщений: 17
Всем большое Спасибо за помощь.

С уважением.
5 сен 12, 16:48    [13119261]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
aleks2
Пардон

select * from workdays 
where Date >= '01.09.2012' and (row_number() over(order by Date desc) - 1) = 5
А ORDER BY как же?
5 сен 12, 17:15    [13119471]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
aleks2
Пардон

select * from workdays 
where Date >= '01.09.2012' and (row_number() over(order by Date desc) - 1) = 5
А ORDER BY как же?
Ой! Прошу прощения. У Вас же TOPа-то и нет
Перегрелся...
5 сен 12, 17:16    [13119475]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37079
у меня пишет
автор
Windowed functions can only appear in the SELECT or ORDER BY clauses.
6 сен 12, 12:10    [13122931]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Wizandr
у меня пишет
автор
Windowed functions can only appear in the SELECT or ORDER BY clauses.


select * from
(
select (row_number() over(order by Date desc) - 1) id, * from workdays 
where Date >= '01.09.2012' 
)
where id = 5
6 сен 12, 12:59    [13123291]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите про TOP @n  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Knyazev Alexey
Wizandr
у меня пишет
пропущено...


select * from
(
select (row_number() over(order by Date desc) - 1) id, * from workdays 
where Date >= '01.09.2012' 
) t
where id = 5
6 сен 12, 12:59    [13123294]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить