#sql
#sql
Вопрос:
SQL-запрос для двух групп в одном столбце, группа 1 называется специальной, которой должны принадлежать значения типа (‘ve02’, ‘ve14;,’ve22’), группа 2 называется общей, которая имеет остальные значения.
column 1
ve01
ve02
ve10
ve10
ve22
ANS: Special | Common
've02' | 've01'
've22' |'ve10'
Комментарии:
1. Как вы сопоставляете специальные и общие значения? Например: почему ve02 находится в той же строке результатов, что и ve01?
Ответ №1:
Ваше требование кажется довольно искусственным, но вот запрос, который будет выполнять:
with
s as (
select 've02' as v
union all select 've14'
union all select 've2'
),
l as (
select s.v
from t
join s on t.col1 = s.v
),
ln as (
select v, row_number() over(order by v) as n from l
),
r as (
select s.v
from t
left join s on t.col1 = s.v
where s.v is null
),
rn as (
select v, row_number() over(order by v) as n from r
)
select lx.v as special, rx.v as common
from lx
full outer join rx on ln.n = rn.n