как выбрать отдельные значения из таблицы, когда мне нужно выбрать значения, имеющие y, если в нем есть оба значения: y, n и n, только если нет значения y - PullRequest
0 голосов
/ 18 октября 2019

У меня есть таблица с данными, такими как

promo    flag 

ab21     y 
ab21     N  
bc22     N  
bc22     N  
CD23     Y  
CD23     Y 
ef24     N
ef24     y

Я хочу отдельное промо, отметьте из таблицы, но когда у одного промо есть оба флага Y, N, я хочу только Y FLAG PROMO

т.е. ожидаемый результат

ab21 y
bc22 n
cd23 y
ef24 y

нужна помощь в построении простого запроса

как

select distinct promo,flag from table where ( your solution subquery)

Ответы [ 2 ]

1 голос
/ 18 октября 2019

Попробуйте, это проще (из ваших тестовых данных):

select promo, max(lower(flag)) from table
group by promo
0 голосов
/ 18 октября 2019

Вы можете использовать аналитическую функцию следующим образом:

Select promo, flag 
 from (Select promo, flag,  
       row_number() 
       over (partition by promo order by upper(flag) desc nulls last) as rn 
 From your_table) 
Where rn=1;

Вы также можете использовать группирование по, но это ограничит вас в выборе других столбцов из таблицы.

select promo, max(upper(flag)) from table
group by promo

Кроме того, в группе по запросу он будет нечувствителен к регистру, поэтому я рекомендую использовать аналитическую функцию.

Cheers !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...