инструкция case внутри вложенного регистра case - PullRequest
0 голосов
/ 24 апреля 2020

Я сделаю этот вопрос более точным

У меня есть эти данные

id   product  count  
1      a        10
1      b        20
1      c        10
1      d        30

Я хочу получить результат как

Поскольку оба продукта A и B имеют значения i хочу считать их как единое целое, поэтому результат должен подсчитываться (отдельно A, C, D), который равен 3

. Если какой-либо из продуктов (A имеет значения, но B не имеет или наоборот), то также результат должен быть 3

, если оба продукта A и B не имеют значения, тогда результат должен быть 2

. Как этого добиться, используя оператор case в oracle pl sql

1 Ответ

0 голосов
/ 25 апреля 2020

Я не уверен, как вы определяете either count of a or either count of b not both, но если вы определили это явно, то вы можете попробовать это:

with t as (
    select 1 as id, 'a' as product from dual
    union all
    select 1 as id, 'b' as product from dual
    union all
    select 1 as id, 'c' as product from dual
    union all
    select 1 as id, 'd' as product from dual
) select id, 
        product, 
        count( case when product in ('c', 'd', 'a') then 1 end ) --change 'a' to 'b' to get the the result for 'b'
from t
group by id, product;
...