У меня есть два набора данных:
id_description
id description
1 The cat sat
2 The dog barked
2 The dog barked
3 The parrot
4 The dog barked
4 The dog barked
person_description
person description
John The cat sat
Jane The dog barked
James The parrot
Mary The dog barked
Мне нужно создать третий набор данных, который выглядит следующим образом (любой из двухварианты ниже):
id person description
1 John The cat sat
2 Jane The dog barked
3 James The parrot
4 Mary The dog barked
id person description
1 John The cat sat
2 Mary The dog barked
3 James The parrot
4 Jane The dog barked
Я начинаю с попытки:
SELECT distinct a.id, b.person, a.description
FROM id_description a
LEFT OUTER JOIN person_description b ON a.description = b.description
В результате получается этот набор данных:
id person description
1 John The cat sat
2 Jane The dog barked
2 Mary The dog barked
3 James The parrot
4 Jane The dog barked
4 Mary The dog barked
Из-за объединения на description
, person
может быть продублировано для двух или более id
номеров.Как мне добраться до моего целевого набора данных?
Каждое число person
и id
представляется один раз, и не имеет значения, к какому id
присоединен person
(т. Е. 2 / Джейн и 4 / Мэри эквивалентны 2 / Мэрии 4 / Джейн).Я пытался использовать row_number() over (partition by id order by person)
, а затем фильтровать по row_number = 1
, но это привело к следующему:
id person description
1 John The cat sat
2 Jane The dog barked
3 James The parrot
4 Jane The dog barked
Мэри не представлена, потому что Джейн была строкой номер один для 2 и 4.