powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Двойное условие в DECODE
12 сообщений из 12, страница 1 из 1
Двойное условие в DECODE
    #39510957
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброего времени суток уважаемые.
Подскажите пожалуйста, можно ли в DECODE какии то образом сделать двойное условие на проверку ?


Код: plsql
1.
count(distinct (decode(d.oprcod, 'UTR', d.lodnum))) "stg_reg"



а хотелось бы что то типа, что бы проверка шла по d.oprcod и d.fr_arecod и только если совпадение - счет d.lodnum
Код: plsql
1.
count(distinct (decode(d.oprcod, 'UTR' and d.fr_arecod like 'SHSTB1%',  d.lodnum))) "stg_reg"



Спасибо.
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39510967
kvitnitskiy,

Вложенный декоде, а лучше - кейс.
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39510971
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно поподробнее неасчет вложенного DECODE?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select d.usr_id,
        count(distinct (decode(d.frstol, 'RT2PR01', d.lodnum, 'RT2PR02', d.lodnum, 'RT2PR03', d.lodnum, 'RT2PR04', d.lodnum))) "zli_sum",
        count(distinct (decode(d.tostol, 'PR2RT01', d.lodnum, 'PR2RT02', d.lodnum, 'PR2RT03', d.lodnum, 'PR2RT04', d.lodnum))) "zwr_sum",
        count(distinct (decode(d.oprcod, 'PCK', d.lodnum))) "wys_sum",
        count(distinct (decode(d.actcod, 'TRLR_LOAD', d.lodnum))) "zal_sum",
        count(distinct (decode(d.oprcod, 'URC', d.lodnum))) "roz_sum",
        count(distinct (decode(d.oprcod, 'UTR', d.lodnum))) "stg_reg"
        count(distinct (decode(d.tostol, 'PR2RTQ1', d.lodnum, 'PR2RTQ2', d.lodnum))) "to manipultion",
        count(distinct (decode(d.frstol, 'RT2PRQ1', d.lodnum, 'RT2PRQ2', d.lodnum))) "from manipultion"
   from dlytrn d
  where d.devcod <> 'UNKNOWN'
    and d. actcod <> 'INVSTSCHG'
    and d.trndte >= to_date('21-08-2017 14:00:00', 'DD-MM-YYYY HH24:MI:SS')
    and d.trndte <= to_date('26-08-2017 23:59:59', 'DD-MM-YYYY HH24:MI:SS')
  group by d.usr_id

...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511030
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiyА можно поподробнее неасчет вложенного DECODE?Не нужно.
RTFM case expression
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511047
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и кк же в case запилить два условия на одну выбборку ?
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511073
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kvitnitskiyи кк же в case запилить два условия на одну выбборку ?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
count(
      distinct(
               decode(
                      d.oprcod,
                      'UTR',decode(
                                   substr(d.fr_arecod,1,6),
                                   'SHSTB1',d.lodnum
                                  )
                     )
              )
     ) "stg_reg"



Но CASE гораздо проще:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
count(
      distinct(
               case
                 when d.oprcod = 'UTR' and d.fr_arecod like 'SHSTB1%' then d.lodnum
               end
              )
     ) "stg_reg"



SY.
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511092
kvitnitskiy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY. Спасибо большое ))
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511396
де кодер?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kvitnitskiy
Код: plsql
1.
count(distinct (decode(d.oprcod, 'UTR' and d.fr_arecod like 'SHSTB1%',  d.lodnum))) "stg_reg"



Код: plsql
1.
count(distinct (decode(d.oprcod || substr(d.fr_arecod, 1 ,6), 'UTRSHSTB1',  d.lodnum))) "stg_reg"
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511436
vladimir74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SY только жедательно помнить что case и decode не всегда дают один и тот же результат.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
WITH t
     AS (SELECT 1 a FROM DUAL UNION ALL
          SELECT 3 a FROM DUAL  UNION ALL
          SELECT NULL a FROM DUAL)
SELECT a, 
           DECODE(a,  1, 10,  NULL, 20,  30) b, 
           CASE a WHEN 1 THEN 10 WHEN NULL THEN 20 ELSE 30 END c
  FROM t;
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511444
vladimir74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladimir74,

забыл написать главное!! что в кейсе NULL надо обрабатывать а в DECODE нет.
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511523
kvitnitskiyа хотелось бы что то типа, что бы проверка шла по d.oprcod и d.fr_arecod и только если совпадение - счет d.lodnum
Код: plsql
1.
count(distinct (decode(d.oprcod, 'UTR' and d.fr_arecod like 'SHSTB1%',  d.lodnum))) "stg_reg"

Код: plsql
1.
select count(distinct d.lodnum) from таблица d where d.oprcod='UTR' and d.fr_arecod like 'SHSTB1%'
...
Рейтинг: 0 / 0
Двойное условие в DECODE
    #39511546
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по жалуй стоkvitnitskiyа хотелось бы что то типа, что бы проверка шла по d.oprcod и d.fr_arecod и только если совпадение - счет d.lodnum
Код: plsql
1.
count(distinct (decode(d.oprcod, 'UTR' and d.fr_arecod like 'SHSTB1%',  d.lodnum))) "stg_reg"

Код: plsql
1.
select count(distinct d.lodnum) from таблица d where d.oprcod='UTR' and d.fr_arecod like 'SHSTB1%'


в селесте есть и напр count(*),count(distinct fr_arecod) тощо

.....
stax
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Двойное условие в DECODE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]