Сопоставить значения, основанные на взаимосвязи между многими, используя DAX - PullRequest
1 голос
/ 15 апреля 2020

У меня есть ситуация, когда мне нужно отобразить значения поставщиков из одной таблицы в другую на основе комбинации идентификатора детали и завода. Таблицы выглядят следующим образом:

1002 * Таблица A

enter image description here

Таблица B

enter image description here

Теперь на основе идентификатора завода и номера детали Мне нужно отобразить значения поставщиков из таблицы A в таблицу B.

Ожидаемый результат:

enter image description here

Я пытаюсь решить эту проблему в DAX, поскольку обе эти таблицы не являются базовыми таблицами, они выводятся как Сводные таблицы. Таким образом, использование Power Query не сработает.

До сих пор я не пробовал это в SQL, но если кто-нибудь и мне поможет с решением с помощью SQL, это вполне подойдет.

Заранее спасибо! !

1 Ответ

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

Если я правильно понимаю, вам нужны прямые совпадения. Затем, когда вещи не совпадают, вы хотите «выровнять» оставшиеся строки. Я бы предложил использовать union all для этой цели:

select a.plant, a.partnumber, a.supplier, b.supplier
from a join
     b
     on a.plant = b.plant and
        a.partnumber = b.partnumber and
        a.supplier = b.supplier
union all
select plant, partnumber, max(supplier), max(supplier_b)
from ((select a.plant, a.partnumber, a.supplier, null as supplier_b
              row_number() over (partition by plant, partnumber order by supplier) as seqnum
       from a
       where not exists (select 1
                         from b
                         where a.plant = b.plant and
                               a.partnumber = b.partnumber and
                               a.supplier = b.supplier
                        )
      ) union all
      (select b.plant, b.partnumber, null, b.supplier,
              row_number() over (partition by plant, partnumber order by supplier) as seqnum
       from b
       where not exists (select 1
                         from a
                         where a.plant = b.plant and
                               a.partnumber = b.partnumber and
                               a.supplier = b.supplier
                        )
       )
      ) ab
group by plant, partnumber, seqnum;
...