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

Откуда: Москва
Сообщений: 598
Есть таблица table

action_idnomerdata
1412/2/2009
2414/3/2009
.............
27417/3/2009
28515/3/2009
29513/1/2009
...............
60516/6/2009
...............
1001023/7/2009


для каждого номера вывести последние 15 строк. т.е. допустим для nomer=4 нужно вывести начиная с Action_id=12 и по 27, для nomer=5, нужно вывести начиная с Action_id=45 и по 60 и т.д. для каждого номера.
т.е.

action_idnomerdata
12415/3/2009
.............
27417/3/2009
45515/6/2009
............
60516/6/2009
..............


версия : Microsoft SQL Server 2005 - 9.00.3054.00 (X64) Mar 23 2007 18:41:50 Copyright (c) 1988-2005 Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 5.2 (Build 3790: Service Pack 2)
1 июл 09, 10:14    [7361928]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос.  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
не проверял:
select top 1 with ties *
  from table
 order by (row_number() over(partition by nomer order by data desc) - 1) / 15
1 июл 09, 10:20    [7361963]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
1
WITH CTE AS (SELECT ROW_NUMBER()OVER(PARTITION BY nomer ORDER BY data DESC) N, * FROM [table])
SELECT * FROM CTE WHERE N<=15;
2
SELECT TOP 1 WITH TIES *
FROM [table]
ORDER BY ROW_NUMBER()OVER(PARTITION BY nomer ORDER BY data DESC)/16;
1 июл 09, 10:42    [7362098]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Паганель
не проверял:
select top 1 with ties *
  from table
 order by (row_number() over(partition by nomer order by data desc) - 1) / 15
Надо на 16
Чтобы для первых 15 дало 0, а начиная с 16, - 1
1 июл 09, 10:44    [7362106]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос.  [new]
minya13_85
Member

Откуда: Москва
Сообщений: 598
спасибо всем, я уж думал придется курсором бегать....
1 июл 09, 10:47    [7362129]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос.  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
iap
Чтобы для первых 15 дало 0, а начиная с 16, - 1
select (1 - 1) / 15 as result_1
      ,(15 - 1) / 15 as result_15
      ,(16 - 1) / 15 as result_16

result_1    result_15   result_16
----------- ----------- -----------
0           0           1

(1 row(s) affected)
1 июл 09, 10:48    [7362137]     Ответить | Цитировать Сообщить модератору
 Re: Интересный запрос.  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Паганель
iap
Чтобы для первых 15 дало 0, а начиная с 16, - 1
select (1 - 1) / 15 as result_1
      ,(15 - 1) / 15 as result_15
      ,(16 - 1) / 15 as result_16

result_1    result_15   result_16
----------- ----------- -----------
0           0           1

(1 row(s) affected)
Упс!
Я -1 что-то не заметил!
Прошу прощения...
1 июл 09, 10:49    [7362148]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить