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

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

Есть таблица с 3 колонками:

dateflag id
1 0 .
2 1 .
3 0 .
4 0 .
5 0 .
6 1 .
7 0 .
8 1 .


Необходимо задать id так, чтобы при каждом flag=1 id увеличивался на 1. Таким образом, таблица будет выглядеть так:

date flag id
1 0 0
2 1 1
3 0 1
4 0 1
5 0 1
6 1 2
7 0 2
8 1 3


Думал это сделать через глобальную меременную, но, мне кажется, так нельзя)

select
date
,flag
,case when (flag=1) then set @var=@var+1 end
,@var as id
from table


Как это можно сделать пооптимальнее? Спасибо!
19 сен 18, 13:01    [21679396]     Ответить | Цитировать Сообщить модератору
 Re: Измнение значения глобальной переменной внутри Select  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Volandpro,

SUM(Flag) OVER (ORDER BY date)

глобальные переменные? где у вас они?
19 сен 18, 13:03    [21679404]     Ответить | Цитировать Сообщить модератору
 Re: Измнение значения глобальной переменной внутри Select  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5226
Volandpro

Необходимо задать id так, чтобы при каждом flag=1 id увеличивался на 1. Таким образом, таблица будет выглядеть так:



sum(case when (flag=1) then 1 else 0 end)  

для случая, если "синус угла флаг бывает больше 1"
19 сен 18, 13:41    [21679491]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить