Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
azor Member Откуда: Сообщений: 4 |
Доброго времени суток! Есть таблица со следующими данными Дата | CLOSE 03/01/12 | 1 03/02/12 | 2 03/03/12 | 3 03/04/12 | 5 03/05/12 | 7 03/06/12 | 6 03/07/12 | 7 03/08/12 | 8 ... Необходимо сформировать SQL запрос возвращающий следующие данные Дата | CLOSE | Delta | Delta_s 03/02/12 | 2 | 2 - 1 = 1 | (2-1)/1 = 1 03/03/12 | 3 | 3 - 2 = 1 | (3-2)/2 = 0.5 03/04/12 | 5 | 5 - 3 = 2 | (5-3)/3 = 0.66... 03/05/12 | 7 | 7 - 5 = 2 | (7-5)/5 = 0.4 03/06/12 | 6 | 6 - 7 =-1 | (6-7)/7 =-0,14 03/07/12 | 7 | 7 - 6 = 1 | (7-6)/6 = 0.166... 03/08/12 | 8 | 8 - 7 = 1 | (8-7)/7 = 0.125 ... Где поля Delta и Delta_s являются расчитываемыми Delta = Close_текущее - Close_за предыдущий месяц Delta_s = (Close_текущее - Close_за предыдущий месяц)/Close_за предыдущий месяц Заранее спасибо! |
22 авг 12, 16:11 [13050366] Ответить | Цитировать Сообщить модератору |
AmKad Member Откуда: Сообщений: 5238 |
azor, Версия какая? |
22 авг 12, 16:45 [13050669] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
;with numbered as (select *, ROW_NUMBER() over(order by Дата ASC)) n from [Есть таблица со следующими данными]_ select n2.*, n2.CLOSE-n1.CLOSE Delta, (n2.CLOSE-n1.CLOSE)/n1.CLOSE Delta_s from numbered n2 inner join numbered n1 on n2.n-1=n1.n |
22 авг 12, 16:48 [13050686] Ответить | Цитировать Сообщить модератору |
azor Member Откуда: Сообщений: 4 |
aleks2, Спасибо за помощь.;With numbered([TICKER],[PER],[DATE],[CLOSE],[VOL],n) As ( SELECT [TICKER], [PER], [DATE], [CLOSE], [VOL], ROW_NUMBER() over(order by [TICKER] ASC) n FROM [Practika2012].[dbo].[tblMMB] Where substring([DATE], 1,3) Like '03/%' ) Select n2.n, n2.[TICKER], n2.[PER], n2.[DATE], n2.[VOL], cast(n2.[CLOSE] As real) as [CLOSE], -- Текущее значение cast(n1.[CLOSE] As real) as [CLOSE_PRIVIOUS], -- Значение предыдущего периода cast(n2.[CLOSE] As real) - cast(n1.[CLOSE] As real) As Delta, (cast(n2.[CLOSE] As real) - cast(n1.[CLOSE] As real))/cast(n1.[CLOSE] As real) As Delta_s From numbered n2 inner join numbered n1 on n2.n-1=n1.n |
23 авг 12, 10:29 [13053393] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
[DATE] - типа DATE? |
||
23 авг 12, 10:32 [13053419] Ответить | Цитировать Сообщить модератору |
AmKad Member Откуда: Сообщений: 5238 |
azor, MS SQL 2012: lag |
23 авг 12, 13:17 [13054947] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |