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

Откуда:
Сообщений: 6
есть табличка с одним столбцом
1
2
3
5
6
7
8
9
11
12
15
16

нужно получить результирующий набор

1 3 3
5 9 4
11 12 2
15 16 2

тоесть тут максим, минимум и кол для набора строк разница между соседними элементами котор не больше 1
и всё это сделать на ANSI SQL без функций и процедур
6 окт 09, 12:58    [7747476]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Какой стандарт ANSI SQL имеется в виду?
6 окт 09, 13:00    [7747489]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
AlexMarlo
Member

Откуда:
Сообщений: 6
написал всё что есть
на счёт стандарта не знаю
6 окт 09, 13:01    [7747497]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
Добрый Э - Эх
Guest
ДАк ак два пальца об асфальт чиркнуть...
6 окт 09, 13:01    [7747503]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
В стандартах не силен
Вот первое что в голову пришло
declare @t table(id int primary key)
insert into @t(id)
select  1 union all
select  2 union all
select  3 union all
select  5 union all
select  6 union all
select  7 union all
select  8 union all
select  9 union all
select 11 union all
select 12 union all
select 15 union all
select 16

select min(id), max(id), count(*)
  from (select id
              ,id - (select count(*) from @t as t2 where t2.id <= t1.id) as grp
          from @t as t1) as numbered
 group by grp

----------- ----------- -----------
1           3           3
5           9           5
11          12          2
15          16          2

(4 row(s) affected)
6 окт 09, 13:05    [7747532]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
Добрый Э - Эх
Guest
Или так
select min(v.num) as min_num, 
       max(v.num) as max_num, 
       count(1) as cnt
  from (
         select t0.num, count(1) - t0.num as grp_id
           from t t0
           join t t1
             on t0.num >= t1.num
          group by t0.num
       ) v
 group by grp_id
 order by min(v.num)
6 окт 09, 13:06    [7747542]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
на ANSI SQL без функций


Гм... Например, ANSI SQL 2003 соедржит ряд аналитических функций, таких как ROW_NUMBER(). Их тоже нельзя использовать?
6 окт 09, 13:06    [7747543]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
AlexMarlo
Member

Откуда:
Сообщений: 6
pkarklin

Гм... Например, ANSI SQL 2003 соедржит ряд аналитических функций, таких как ROW_NUMBER(). Их тоже нельзя использовать?


нет ((
6 окт 09, 13:12    [7747596]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
pkarklin
автор
на ANSI SQL без функций


Гм... Например, ANSI SQL 2003 соедржит ряд аналитических функций, таких как ROW_NUMBER(). Их тоже нельзя использовать?
Если не ошибаюсь, они есть уже в ANSI SQL 1999
6 окт 09, 13:14    [7747606]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
Добрый Э - Эх
Guest
AlexMarlo
нет ((
Два вышеприведенных варианта чем-то не устроили?
Можно и без подзапросов намутить, но будет сильно сложно, ни разу не читабельно и достаточно накладно по ресурсам для сервера
6 окт 09, 13:14    [7747611]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
iap
Если не ошибаюсь, они есть уже в ANSI SQL 1999


Да, не ошибаетесь.
6 окт 09, 13:17    [7747629]     Ответить | Цитировать Сообщить модератору
 Re: запрос на ANSI SQL без функций  [new]
AlexMarlo
Member

Откуда:
Сообщений: 6
устроили
да спасибо всем))
6 окт 09, 13:17    [7747630]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить