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

Откуда:
Сообщений: 1197
Привет.

Есть таблица с полями: StoreId, SalesCount, WeekNumber

Нужно динамически добавить столбец который будет выводить: Изменение продаж последней недели относительно среднего числа продаж предыдущих, до последней, 4 недель.

Как написать без курсора такое?
26 дек 12, 11:16    [13687161]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
последняя неделя ето какая ? Текущая в году или как ? И почему недель всего 4-ре ?
26 дек 12, 11:18    [13687177]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
relief
Member

Откуда:
Сообщений: 1197
Maxx
последняя неделя ето какая ? Текущая в году или как ? И почему недель всего 4-ре ?


последняя - это последня полная неделя от параметра "Дата окончания".
среднее число за последние 4 недели перед последней полной неделей - это условие бизнеса
26 дек 12, 11:22    [13687205]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Maxx
Member [скрыт]

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

в приведенных полях в стартовом посте - не слова о
relief
последняя - это последня полная неделя от параметра "Дата окончания".

может все таки корретно софрмулируете задачу ? Да и тестовые данные неплохоб предоставить
26 дек 12, 11:24    [13687221]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
relief
Member

Откуда:
Сообщений: 1197
Maxx
relief,

в приведенных полях в стартовом посте - не слова о
relief
последняя - это последня полная неделя от параметра "Дата окончания".

может все таки корретно софрмулируете задачу ? Да и тестовые данные неплохоб предоставить


На входе есть параметры "Дата начала" и "Дата окончания". По ним получаются полные недели во временную таблицу.
Поэтому я и не стал писать лишнего.

В итоговой таблице есть 3 поля, что я описал. Надо добавить еще одно поле с логикой, что я тоже описал
26 дек 12, 11:27    [13687241]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
WarAnt
Member

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

select StoreId, SalesCount, WeekNumber,SalesCount - avgsales
from #Table t 
cross apply (select AVG(salescount) avgsales
			from #Table 
			where StoreId = t.StoreId and WeekNumber >= t.WeekNumber-4 and WeekNumber < t.WeekNumber  
			) a 
26 дек 12, 11:55    [13687517]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
relief
Member

Откуда:
Сообщений: 1197
WarAnt
relief,

select StoreId, SalesCount, WeekNumber,SalesCount - avgsales
from #Table t 
cross apply (select AVG(salescount) avgsales
			from #Table 
			where StoreId = t.StoreId and WeekNumber >= t.WeekNumber-4 and WeekNumber < t.WeekNumber  
			) a 


Big thanks!
26 дек 12, 17:23    [13690629]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить