Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
1

Вычисляемое поле но на основе предыдущих полей

07.12.2016, 10:46. Показов 1979. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
есть таблица:
 
id nam s1 s2 s3
1 л1 1 2 2
2 л2 1 1 1
3 л1 2 3 4
4 л1 5 3 4

задача, для любой из строк посчитать значение, которое основывается на предыдущих строках из выборки.
по формуле: x=x-1+s1-1-s2-1-s3-1
где x-1 = предыдущая строка, x0 = 32
причём выборка например по полю nam, то есть только те строки, которые = л1

например для 4й строки будет так: x=((32+1-2-2)+2-3-4)+5-3-4

как это сделать скуэль запросом?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.12.2016, 10:46
Ответы с готовыми решениями:

Вычисляемое поле на основе полей 2 таблиц
Поле в 1 таблице: . Поле во 2 таблице: . Можно ли как-нибудь поставить автоматическое вычисление...

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

Создать вычисляемое поле счетчик по значениям нескольких полей
У меня таблица и в таблице несколько поля. Я создал поле тип числовой и в правило проверки либо по...

Подскажите как правильно написать вычисляемое поле в таблице на основе формулы Эксель
Добрый день. При переводе БД в Access из Экселя сталкиваюсь с с трудностями ввиду того, что не...

6
1652 / 1151 / 173
Регистрация: 23.07.2010
Сообщений: 6,855
07.12.2016, 10:52 2
нумеровать строки и пронумерованную на себя же?
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
07.12.2016, 11:08  [ТС] 3
pincet, вот в этом направлении пытаюсь уже день делать, пока не знаю куда тут вставить нумерацию строк, и как по ней объединить:
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
WITH moving2 (id,level,vivod)
AS
(
SELECT id,0 AS level,32 
    FROM moving m   WHERE m.podr=@podr
UNION ALL
SELECT m.id,m2.Level+1,m2.vivod+pv-perv-vv-dead FROM moving m
INNER JOIN moving2 m2 ON m2.id=m.id
WHERE m.podr=@podr
AND m2.level<100 AND m2.level<>0
)
SELECT * FROM moving2
ORDER BY level
0
119 / 111 / 47
Регистрация: 09.07.2013
Сообщений: 209
07.12.2016, 11:18 4
T-SQL
1
2
3
4
5
6
declare @t table (id int, nam nvarchar(10), s1 int, s2 int, s3 int)
insert @t (id, nam, s1, s2, s3)
values (1, N'л1', 1, 2, 2), (2, N'л2', 1, 1, 1), (3, N'л1', 2, 3, 4), (4, N'л1', 5, 3, 4)
select *,32 + SUM(s1 - s2 - s3) over (partition by nam order by id)
from @t
order by id
0
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
07.12.2016, 12:38  [ТС] 5
ругается на 4ю строку: Неправильный синтаксис около конструкции "order".

а без ордера не суммирует нифига.
0
119 / 111 / 47
Регистрация: 09.07.2013
Сообщений: 209
07.12.2016, 12:49 6
Лучший ответ Сообщение было отмечено texnix как решение

Решение

SELECT @@VERSION ?

Добавлено через 6 минут
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
declare @t table (id int, nam nvarchar(10), s1 int, s2 int, s3 int)
insert @t (id, nam, s1, s2, s3)
values (1, N'л1', 1, 2, 2), (2, N'л2', 1, 1, 1), (3, N'л1', 2, 3, 4), (4, N'л1', 5, 3, 4)
 
select t1.*, 32 + SUM(t2.s1 - t2.s2 - t2.s3)
from @t t1
join @t t2 on t2.nam = t1.nam and t2.id <= t1.id
group by t1.id, t1.nam, t1.s1, t1.s2, t1.s3
order by t1.id
 
select t1.*, 32 + q.Summa
from @t t1
cross apply
    (select SUM(t2.s1 - t2.s2 - t2.s3) Summa
     from @t t2
     where t2.nam = t1.nam and t2.id <= t1.id
    ) q
order by t1.id
1
19 / 19 / 12
Регистрация: 09.12.2014
Сообщений: 250
07.12.2016, 14:07  [ТС] 7
Serpentariy, Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0
Спасибо, другие 2 запроса работают. Буду анализировать.
0
07.12.2016, 14:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.12.2016, 14:07
Помогаю со студенческими работами здесь

Вычисляемое поле (сумма полей из 2 таблиц):ежедневную потребность в материалах для производства
Здравствуйте. Немного оптимизирую базу, которую делал ранее (сначала делал расчеты в VBA, но на...

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

Предложить результат на основе предыдущих значений
Доброе время суток, только-только начал изучать конфигурацию 1с и мне дали тестовое задание для...

Создать новую таблицу на основе предыдущих
Доброй ночи Есть Таблица1 с полями: ID код статус 1 13 А 2 14 А...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru