Нахождение общего значения в строках с одним столбцом - PullRequest
0 голосов
/ 16 октября 2019
ID
5-6
6-5
7-5

Как вы видите, есть общее число 5 между 3 строками в одном столбце, и я ищу сценарий, как найти общее число с помощью группировки этих строк и записи общего числа в другой столбец, напримерниже:

ID    CommonNumber
5-6        5
6-5        5
7-5        5   

1 Ответ

0 голосов
/ 16 октября 2019

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

with t as (
      select v.*
      from (values ('5-6'), ('6-5'), ('7-5')) v(id)
     )
select s.value
from t cross apply
     string_split(t.id, '-') s
group by s.value
having count(*) = (select count(*) from t);

Здесь - это db <> скрипка.

Iне вижу смысла добавлять это в виде столбца в каждую строку, но вы можете использовать join для этой цели.

Тогда. Как только вы поймете, как это сделать, исправит вашу модель данных . Вы должны хранить списки в отдельной таблице соединений / ассоциаций.

Для справки, вот оригинальный ответ для Postgres.

with t as (
      select v.*
      from (values ('5-6'), ('6-5'), ('7-5')) v(id)
     )
select r.id
from t cross join lateral
     regexp_split_to_table(t.id, '-') r(id)
group by r.id
having count(*) = (select count(*) from t);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...