Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Вычисление значений столбца  [new]
bez_DELL_nik
Member

Откуда:
Сообщений: 28
Здравствуйте форумчане!
У меня такой вопрос:
Есть ли возможность вычисления разности между текущей строкой и предыдущей столбца с последующей записью значения во второй столбец в текущую строку? Я понимаю, что MSSQL не EXCEL, но очень надо) Если есть, то подскажите сценарий) Перевожу все вычисления из SCADA-системы в другие средства
20 май 13, 14:41    [14321410]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

Откуда:
Сообщений: 28
Или в датасете delphi
20 май 13, 14:43    [14321432]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Glory
Member

Откуда:
Сообщений: 104760
from mytable a inner join mytable b on <условие соединение текущей записи с последующей>
20 май 13, 14:46    [14321449]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

Откуда:
Сообщений: 28
Это слияние двух таблиц по условию, но даже если и так, то как задать условие?
20 май 13, 14:55    [14321514]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
baracs
Member

Откуда: Москва
Сообщений: 7204
bez_DELL_nik,

Не двух, а одной.

А как вы отличаете текущую строку от предыдущей?
20 май 13, 15:03    [14321566]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Anddros
Member

Откуда:
Сообщений: 1077
Для 2012-го:
select *, summa - lag(summa)over(order by ...) from ...
20 май 13, 16:07    [14322073]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

Откуда:
Сообщений: 28
Ну если не так, то есть ли возможность вычисления разности между последней записью значения в столбце и первой?
21 май 13, 10:46    [14324977]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Glory
Member

Откуда:
Сообщений: 104760
bez_DELL_nik
Ну если не так, то есть ли возможность вычисления разности между последней записью значения в столбце и первой?

Точно так же - соединить 1ую запись с последней.
21 май 13, 10:47    [14324983]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

Откуда:
Сообщений: 28
Сделал расчёт на клиентской части, тема закрыта
23 май 13, 11:15    [14337308]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

Откуда:
Сообщений: 28
Но лучше , чтобы расчёты были в базе
Glory,
каким образом соединить эти записи, не могу допендрить
столбцы id и value, в value значения накапливаются, т.е.
1 34
2 54
3 65
4 76
как сделать, чтобы получилось
1 34 0
2 54 20
3 65 11
4 76 11
с помощью вычисляемых никак, т.к. работает только с текущей строкой
слабоват я в SQL
24 май 13, 11:11    [14343369]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Glory
Member

Откуда:
Сообщений: 104760
from mytable a left outer join mytable b on <условие соединение текущей записи с последующей>
24 май 13, 11:13    [14343380]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
bez_DELL_nik,

версия сервера-то у Вас какая?
24 май 13, 11:14    [14343393]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
bez_DELL_nik
с помощью вычисляемых никак, т.к. работает только с текущей строкой
Если сделать скалярную функцию, то можно.
Но надо ли?
24 май 13, 11:15    [14343403]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

Откуда:
Сообщений: 28
2005
24 май 13, 11:27    [14343505]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
select
 t.id, t.value - isnull(select top (1) value from mytable where id < t.id order by id desc), t.value)
from
 mytable t;
24 май 13, 11:37    [14343593]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Насколько я пони автора:

DECLARE @Table TABLE (Val int) 

INSERT INTO  @Table SELECT 2
INSERT INTO  @Table SELECT 4
INSERT INTO  @Table SELECT 10 
INSERT INTO  @Table SELECT 22


SELECT 
  [This] = SS.[This]
 ,[Next] = SS.[Next]
 ,[SomeCalc] = [Next] - [This]

FROM ( 
SELECT [This] = T1.Val,[Next] = T2.Val, [R] = ROW_NUMBER() OVER (PARTITION BY T1.Val ORDER BY T2.Val)
FROM @table T1 LEFT JOIN @Table T2 ON T2.Val > T1.Val
) SS 
WHERE SS.[R] = 1 
24 май 13, 11:47    [14343682]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

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

Неправильный синтаксис около ")"
ошибка
24 май 13, 11:54    [14343740]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
bez_DELL_nik
invm,

Неправильный синтаксис около ")"
ошибка
После isnull ещё одну "(" поставьте
24 май 13, 12:02    [14343829]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Скорее даже так, хотя и не очень изящно
DECLARE @Table TABLE (Val int) 

INSERT INTO  @Table SELECT 2
INSERT INTO  @Table SELECT 3
INSERT INTO  @Table SELECT 10 
INSERT INTO  @Table SELECT 22


SELECT 
  [This] = SS.[This]
 ,[Next] = SS.[Next]
 ,[SomeCalc] = -1 * ( CASE WHEN [Next] IS NULL THEN 0  ELSE SS.[NEXT] - SS.[THIS] END )
 
FROM ( 
SELECT [This] = T1.Val,[Next] = T2.Val, [R] = ROW_NUMBER() OVER (PARTITION BY T2.Val ORDER BY T1.Val)
FROM @table T1 LEFT JOIN @Table T2 ON T2.Val < T1.Val
) SS 
WHERE SS.[R] = 1 
ORDER BY THIS
24 май 13, 12:07    [14343878]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

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

Спасибо большое , очень помогло)
24 май 13, 13:05    [14344526]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

Откуда:
Сообщений: 28
iap
А как теперь сделать insert результатов в столбец вычисляемой таблицы?
24 май 13, 13:16    [14344644]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Glory
Member

Откуда:
Сообщений: 104760
bez_DELL_nik
А как теперь сделать insert результатов в столбец вычисляемой таблицы?

В результат запроса сделать insert нельзя, можно только в таблицы, на основе которых этот запрос сделан.
24 май 13, 13:25    [14344724]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
bez_DELL_nik
Member

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

Мне это и надо) я не правильно выразился
в исходную и надо, в следующий столбец)
24 май 13, 13:28    [14344753]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Мне тут план запроса подсказывает, что мой вариант на 56 процентов быстрее. Вариант коллеги iap хоть и проще смотрится, сильно просаживается на Top 1 =)
24 май 13, 13:28    [14344755]     Ответить | Цитировать Сообщить модератору
 Re: Вычисление значений столбца  [new]
Glory
Member

Откуда:
Сообщений: 104760
bez_DELL_nik
в исходную и надо, в следующий столбец)

Куда-куда ? Следующий после чего ?
24 май 13, 13:29    [14344762]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить