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

Откуда:
Сообщений: 25
Здравствуйте, у меня есть такой код, который выдает вот такие значение, мне нужно ставить условие, там где fDBCR = 0 тогда пусть fSUMM умножит на -1

SELECT ENTRIES.fDBCR, ENTRIES.fSUMM
FROM ENTRIES

К сообщению приложен файл. Размер - 16Kb
5 май 17, 14:48    [20460890]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
Rankatan
Member

Откуда:
Сообщений: 250
SELECT ENTRIES.fDBCR, case when ENTRIES.fDBCR=0 then ENTRIES.fSUMM*-1 else ENTRIES.fSUMM end
FROM ENTRIES 
5 май 17, 14:50    [20460903]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
alex_p_n
Member [заблокирован]

Откуда: Дніпро
Сообщений: 145
Rankatan,

Или
select iif(ENTRIES.fDBCR=0, ENTRIES.fSUMM*(-1), ENTRIES.fSUMM) as fSUMM
5 май 17, 15:02    [20460983]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
rnk
Member

Откуда:
Сообщений: 126
Грязный хак:
SELECT ENTRIES.fDBCR, (2 * fDBCR - 1) * ENTRIES.fSUMM AS fSUMM FROM ENTRIES
5 май 17, 16:38    [20461437]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7407
Чистая арифметика должна быстрее работать, чем ветвление кода.
5 май 17, 17:45    [20461623]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
rnk
Member

Откуда:
Сообщений: 126
Владислав Колосов
Чистая арифметика должна быстрее работать, чем ветвление кода.

У меня на десктопе на 134217728 запрос с CASE отрабатывает за 30 секунд, с арифметикой за 31 секунду. Так что условие всё же чуть-чуть быстрее. Но арифметика иногда удобнее.
16 май 17, 12:30    [20484461]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
автор
Так что условие всё же чуть-чуть быстрее.

выключи те свет, буду рыдать в темноте
16 май 17, 12:32    [20484480]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
uaggster
Member

Откуда:
Сообщений: 770
rnk
Грязный хак:
SELECT ENTRIES.fDBCR, (2 * fDBCR - 1) * ENTRIES.fSUMM AS fSUMM FROM ENTRIES

Эээ... А если fDBCR = 0.5? Нигде ж не сказано, что оно - целое?
16 май 17, 15:52    [20485716]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
uaggster
Эээ... А если fDBCR = 0.5? Нигде ж не сказано, что оно - целое?

fDBCR - это признак счета ДЕБЕТ/КРЕДИТ (и судя по требованиям 0 - кредит, 1 - дебет), и если он вдруг станет нецелым, то это значит, что четыре всадника алкокалипсиса уже завершили свое дело и к тебе спешит белочка...
16 май 17, 18:10    [20486339]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7407
Как же меня веселят спекуляции на тему, чтобы была бы с бабушкой, если бы у неё вдруг отросло дедушкино.
16 май 17, 18:38    [20486447]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
rnk
Member

Откуда:
Сообщений: 126
uaggster
rnk
Грязный хак:
SELECT ENTRIES.fDBCR, (2 * fDBCR - 1) * ENTRIES.fSUMM AS fSUMM FROM ENTRIES

Эээ... А если fDBCR = 0.5? Нигде ж не сказано, что оно - целое?

В исходных данных только 0 и 1
16 май 17, 18:55    [20486483]     Ответить | Цитировать Сообщить модератору
 Re: Как поставить условие  [new]
uaggster
Member

Откуда:
Сообщений: 770
Владислав Колосов
Как же меня веселят спекуляции на тему, чтобы была бы с бабушкой, если бы у неё вдруг отросло дедушкино.

А никому верить нельзя, если не видишь типа и констрейнта.
... и даже если констрейнт видишь - всё равно верить нельзя, ибо бл...ди могли отключить и всякого понапихать )
17 май 17, 08:12    [20487757]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить