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

Откуда: SPB
Сообщений: 954
Добрый день! Помогите составить запросик. Ситуация следующая.
Есть табличка с двумя параметрами. [id] и [неделя].
Id - уникален в пределах таблицы.
[неделя] повторяется. Хочется вывести по 100 значений для всех недель, которые встречаются в таблице. В одном запросе.
Что-то кроме циклов ничего толково не придумаю. Буду рад помощи
11 дек 12, 16:13    [13613619]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
RasimS,

WITH TIES
11 дек 12, 16:16    [13613635]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
RasimS,

может так?
SELECT TOP 100 *
FROM
(
SELECT [неделя]
FROMM [таблица]
GROUP BY [неделя]
HAVING COUNT(1) >1
) tt
11 дек 12, 16:19    [13613657]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
Гость333
Member

Откуда:
Сообщений: 3683
RasimS,

SELECT t.id, t.неделя
FROM
  ( SELECT id,
           неделя,
           ROW_NUMBER() OVER(PARTITION BY неделя ORDER BY id) AS row
    FROM табличка
  ) t
WHERE t.row <= 100;
11 дек 12, 16:19    [13613659]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
поправил код:
SELECT TOP 100 *
FROM
(
SELECT [неделя]
FROM [таблица]
GROUP BY [неделя]
HAVING COUNT(1) >1
) tt
11 дек 12, 16:19    [13613667]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
RasimS
Member

Откуда: SPB
Сообщений: 954
trew
поправил код:
SELECT TOP 100 *
FROM
(
SELECT [неделя]
FROM [таблица]
GROUP BY [неделя]
HAVING COUNT(1) >1
) tt

всего 100 значений будет, а нужно по 100 для каждой недели. Ну если их например меньше для какой-то недели, то соответственно меньше
11 дек 12, 16:23    [13613700]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
qwerty112
Guest
для 2000
select t1.* from t t1
where (select count(*) from t t2 where t1.неделя=t2.неделя and t1.id>=t2.id) <= 100
11 дек 12, 16:30    [13613752]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
RasimS
Member

Откуда: SPB
Сообщений: 954
Гость333
RasimS,

SELECT t.id, t.неделя
FROM
  ( SELECT id,
           неделя,
           ROW_NUMBER() OVER(PARTITION BY неделя ORDER BY id) AS row
    FROM табличка
  ) t
WHERE t.row <= 100;

Спасибо то что нужно
11 дек 12, 16:38    [13613825]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос  [new]
RasimS
Member

Откуда: SPB
Сообщений: 954
qwerty112
для 2000
select t1.* from t t1
where (select count(*) from t t2 where t1.неделя=t2.неделя and t1.id>=t2.id) <= 100
Спасибо
11 дек 12, 16:39    [13613826]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить