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

Откуда:
Сообщений: 192
Здравтвуйте.
Мне надо из 2-х строчек из таблицы сформировать одну таким образом,чтобы
1)если знаки в обоих строках положительные,то надо из значений строки с DK=1 вычесть значения из строки с DK=0
DK NDS
--------------------
1 20
0 8

select   max(DECODE(dk, 1, nds,0)) - max(DECODE(dk, 0, nds,0)) nds1............
В итоге запроса мы имеем правильно результирующую строку
NDS
--------------------
12

2)если же данные в 1-й строке(с DK=1) в столбце nds отрицательные ,а во 2-й строке nds положительный то надо сложить алгебраически их (т.е.-20+2=-18)
DK NDS
--------------------
1 -20
0 5
В результате иметь надо мне
NDS
----
-18
Как мне это сделать,как проверив на знак NDS,надо алгебраическое сложение сделать
Спасибо.
3 авг 10, 17:04    [9201988]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
moroz11
Member

Откуда:
Сообщений: 192
Я ошиблась в конце,в результирующей строке должно получится NDS=-15
3 авг 10, 17:06    [9202012]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
moroz11
Как мне это сделать,как проверив на знак


RTFM SIGN.
3 авг 10, 17:06    [9202016]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
moroz11
Member

Откуда:
Сообщений: 192
еСЛИ МОЖНО,НО БОЛЕЕ ПОДРОБНО
3 авг 10, 17:12    [9202074]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
suPPLer
Member

Откуда: Харків, Україна
Сообщений: 7794
Блог
moroz11
еСЛИ МОЖНО,НО БОЛЕЕ ПОДРОБНО


Можно, можно... Пишите более подробно, никто не запрещает. Для начала, приведите тестовые данные и желаемый результат, используя теги SRC и CSV. Потом Ваш вариант решения, если он есть...

PS: И нажмите на кнопочку над левым Shift ещё раз.
3 авг 10, 17:21    [9202181]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
OmegaMale
Member

Откуда: воткуда
Сообщений: 201
moroz11,

ну, в данном случае можно так сделать:

SELECT SUM( SIGN( DECODE(dk,1,nds) ) * SUM( DECODE(dk,1,ABS(nds),-nds) )
FROM ...
3 авг 10, 17:24    [9202208]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
moroz11
Member

Откуда:
Сообщений: 192
Да я ведь написала тест.Мне нужна проверка NDS на знак и если он отрицательный в столбце DK=1,тогда надо АЛГЕБРАИЧЕСКИ СЛОЖИТЬ 1-ю и 2-ю строки
например
DK nds
----------
1 -20
0 5

В итоге имеем
NDS
--------
-15
3 авг 10, 17:29    [9202267]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
moroz11
если он отрицательный в столбце DK=1
Это как понимать?
3 авг 10, 17:32    [9202306]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
OmegaMale
Member

Откуда: воткуда
Сообщений: 201
OmegaMale
moroz11,

ну, в данном случае можно так сделать:

SELECT SUM( SIGN( DECODE(dk,1,nds) ) * SUM( DECODE(dk,1,ABS(nds),-nds) )
FROM ...


пропустил скобочку одну
SELECT SUM( SIGN( DECODE(dk,1,nds) )) * SUM( DECODE(dk,1,ABS(nds),-nds) )
3 авг 10, 17:33    [9202321]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
moroz11
Member

Откуда:
Сообщений: 192
пОНИМАТЬ НАДО ТАК,если NDS отрицательный с dk=1 ,тогда мы алгебраически складываем по правилам nds в этих строках ,т.е. складыаем (-20+5=-15).Или по-другому,из строки с dk=1 со значением nds=-20 вычитаем значение nds=5 со строки с dk=0/Имеем-15.
3 авг 10, 17:36    [9202353]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
moroz11
Member

Откуда:
Сообщений: 192
спасибо,но не могу разобраться,зачем *-умножение
3 авг 10, 17:37    [9202364]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
gda
Member

Откуда:
Сообщений: 985
чтобы получить -15 :)
3 авг 10, 17:37    [9202372]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
moroz11
пОНИМАТЬ НАДО ТАК,если NDS отрицательный с dk=1 ,тогда мы алгебраически складываем по правилам nds в этих строках ,т.е. складыаем (-20+5=-15).Или по-другому,из строки с dk=1 со значением nds=-20 вычитаем значение nds=5 со строки с dk=0/Имеем-15.
а КАК ПОСТУПАТЬ С NDS со строки с dk=8?
3 авг 10, 17:39    [9202398]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
SQL*Plus
КАК ПОСТУПАТЬ С NDS со строки с dk=8?

Где ты узрел такую строку?
3 авг 10, 17:41    [9202418]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
moroz11
не могу разобраться,зачем *-умножение

Блондинка? :)
3 авг 10, 17:42    [9202426]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
OmegaMale
Member

Откуда: воткуда
Сообщений: 201
Человек и Кошка,

чёрт... рабочий день заканчивается, так круто сознавать, что у кого-то РЕАЛЬНЫЕ проблемы, а у меня так, фигня ХD
3 авг 10, 17:45    [9202436]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
SQL*Plus
Member

Откуда: Россия, Москва
Сообщений: 8131
Человек и Кошка
SQL*Plus
КАК ПОСТУПАТЬ С NDS со строки с dk=8?

Где ты узрел такую строку?
А кто сказал, что такой строки не может быть?
3 авг 10, 18:29    [9202734]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
SQL*Plus
А кто сказал, что такой строки не может быть?

Ну, разве что сумеешь между строк впихнуть :)

автор
Мне надо из 2-х строчек...
3 авг 10, 18:31    [9202750]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
moroz11
Member

Откуда:
Сообщений: 192
Спасибо всем.Просто вчера рабочий день закончился.Блондинка .DK=8 НИКОГДА не будет,потому что может быть только 1-расход (кредит) и 0-приход (дебет).Тогда может кто ответит,простой вопрос,как проверить знак при NDS
SIGN (NDS)>0 ?
4 авг 10, 09:29    [9204804]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
moroz11,

RTFM SIGN
4 авг 10, 09:31    [9204824]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
moroz11
Member

Откуда:
Сообщений: 192
ЗНАЧИТ, IF SIGN(NDS)=-1 И БУдет проверкой на отрицательное число?
4 авг 10, 09:35    [9204844]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
moroz11
ЗНАЧИТ, IF SIGN(NDS)=-1 И БУдет проверкой на отрицательное число?

if nds < 0...
4 авг 10, 09:37    [9204865]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
moroz11
Member

Откуда:
Сообщений: 192
нет,неверно для меня.НДС может быть <0.мне надо проверить знак при nds
4 авг 10, 09:38    [9204875]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
SQLap
Member [заблокирован]

Откуда:
Сообщений: 34063
moroz11
нет,неверно для меня.НДС может быть <0.мне надо проверить знак при nds


если оно <0 то знак -
если > 0 то +

))
4 авг 10, 09:41    [9204903]     Ответить | Цитировать Сообщить модератору
 Re: decode  [new]
Человек и Кошка
Member

Откуда: настоящему индейцу завсегда везде ништяк (с)
Сообщений: 830
moroz11
НДС может быть <0.мне надо проверить знак при nds

По-твоему, эти вещи никак не взаимосвязаны? :))
4 авг 10, 09:42    [9204915]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Oracle Ответить