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

Откуда:
Сообщений: 228
Всем привет!

declare @d table (id int identity(1, 1), date_trans datetime, account varchar(3), amount float)

insert into @d values (getdate(), '01', 100.00, null)
insert into @d values (dateadd(dd, 1, getdate()), '01', 150.00)
insert into @d values (dateadd(dd, 1, getdate()), '01', 50.00)
insert into @d values (dateadd(dd, 1, getdate()), '03', 20.00)
insert into @d values (dateadd(dd, 1, getdate()), '03', 70.00)
insert into @d values (dateadd(dd, 1, getdate()), '03', 80.00)
insert into @d values (dateadd(dd, 1, getdate()), '04', 90.00)
insert into @d values (dateadd(dd, 1, getdate()), '04', 950.00)
insert into @d values (dateadd(dd, 1, getdate()), '05', 30.00)
insert into @d values ('2010-01-02', '01', 10.00)
insert into @d values ('2010-01-03', '01', 15.00)
insert into @d values ('2010-01-04', '01', 5.00)
insert into @d values ('2010-01-05', '03', 2.00)
insert into @d values ('2010-01-06', '03', 7.00)
insert into @d values ('2010-01-07', '03', 8.00)
insert into @d values ('2010-01-08', '04', 9.00)
insert into @d values ('2010-01-09', '04', 95.00)
insert into @d values ('2010-01-10', '05', 3.00)

select t.date_trans, t.account, t.amount, sum(t.amount) over(partition by t.account order by t.date_trans asc)
from @d t

в чем ошибка, не пойму :-(
Подскажите, пожалуйста!
Заранее спасибо
14 июн 09, 22:11    [7298041]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
В агрегатных оконных функциях нет места ORDER BY. Да и зачем оно там. Применяйте его в основном запросе.

BOL-><ORDER BY Clause> cannot be used with aggregate window functions.
14 июн 09, 22:27    [7298069]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
Новичок_я
Member

Откуда:
Сообщений: 228
Спасибо!
14 июн 09, 22:36    [7298078]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
Новичок_я
Member

Откуда:
Сообщений: 228
Хм, но накопительный итог так и не считается. Что не так в запросе?
14 июн 09, 22:38    [7298082]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
Новичок_я
Хм, но накопительный итог так и не считается. Что не так в запросе?


Гм... А каким образом использование OVER поможет Вам посчитать нарастающий итог?!

https://www.sql.ru/faq/faq_topic.aspx?fid=125
14 июн 09, 22:51    [7298095]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6723
pkarklin, притворяетесь? По прямому, как в оракакле.
15 июн 09, 05:07    [7298414]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
Новичок_я
Member

Откуда:
Сообщений: 228
Доброе утро!
Собственно да, запрос перенес из Oracle.
Попробую адаптировать под MS SQL Server :-)
15 июн 09, 07:42    [7298460]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
Новичок_я
Member

Откуда:
Сообщений: 228
Посмотрел в FAQ решение от Glory (https://www.sql.ru/faq/faq_topic.aspx?fid=125). А можно ли как-нибудь сделать расчет нарастающего итога с использованием аналитических функций? Версия сервера 2005
15 июн 09, 07:53    [7298464]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
Бабичев Сергей
Member

Откуда: Красноярск
Сообщений: 2497
Новичок_я
Посмотрел в FAQ решение от Glory (https://www.sql.ru/faq/faq_topic.aspx?fid=125). А можно ли как-нибудь сделать расчет нарастающего итога с использованием аналитических функций? Версия сервера 2005
Тебе же сказали - в MS немного недокрутили аналитические функции. Не умеют они делать всего того, чего с их помощью можно сделать в Oracle или IBM DB2. Ни каких тебе плавающих окон (ни по строкам, ни по диапазону значений), никакого тебе ORDER BY в определении окна НЕранжирующей функции (ORDER BY тут допускается только в РАНЖИРУЮЩИХ функция, ака ROW-NUMBER, RANK, DENSE-RANK), никаких функций по работе с данными соседних строк (LEAD / LAG). Ничего этого в MS SQL Server нету. А как заставить работать то, чего просто нет? Правильный ответ - никак. :)
15 июн 09, 08:02    [7298471]     Ответить | Цитировать Сообщить модератору
 Re: запрос с partition, ошибка в order by (+)  [new]
Новичок_я
Member

Откуда:
Сообщений: 228
Понял :-)
Спасибо!
15 июн 09, 08:29    [7298493]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить