1

В Power-запросе (или MS-запросе, или на самом деле что-нибудь еще, что могло бы создать обновляемую таблицу, которая дает мне желаемые результаты в Excel), как я могу объединиться при частичных совпадениях между двумя полями?

Я хочу сделать что-то похожее на этот оператор SQL:

SELECT T1.SIZES AS SIZES,
       T2.PARTNO as PARTNO
FROM TABLE1 AS T1
LEFT JOIN TABLE2 AS T2
ON T2.APPLICATIONS LIKE '% ' T1.SIZES ' %'

Например: скажем, у меня есть TABLE1 который имеет следующие данные в поле SIZES

  • РАЗМЕРЫ
  • P01
  • P02
  • P03
  • P04

И у меня есть TABLE2 , который имеет следующие данные в полях PART NO и APPLICATIONS

  • ПАРТНО __________ ПРИМЕНЕНИЕ
  • 11111 ______________ Р01/ Р02
  • 22222 ______________ Р02/ Р04
  • 33333 ______________ Р01/ Р04

Я хочу сделать левое внешнее соединение TABLE 1 на TABLE2 и вернуть все строки, которые имеют частичное совпадение между TABLE1.SIZES И TABLE2.APPLICATIONS . Результаты будут следующими:

  • РАЗМЕРЫ ___________ ЧАСТЬ №
  • P01______________11111
  • P01______________33333
  • P02______________11111
  • P02______________22222
  • P03______________ нуль
  • P04______________22222
  • P04______________33333

Я пытался следовать этому примеру реализации функции like в мощном запросе и смог создать формулу, но не могу понять, как использовать ее в качестве критерия для "слияния запросов" (join).

Я новичок в силовом запросе ...

1 ответ1

1

Я бы не стал использовать функцию для этого, я бы предпочел решения с минимальным кодом или без кода, поскольку их проще тестировать и поддерживать.

Я бы начал с 2 запросов, для TABLE1 и TABLE2. Я бы использовал кнопку Добавить столбец / Добавить пользовательский столбец на каждом, чтобы добавить столбец. Я бы назвал его Dummy Match Key и установил бы формулу как

= 1

Теперь вернемся к запросу TABLE1, я бы добавил шаг Merge и присоединился к TABLE2, используя Dummy Match Key, затем развернул исходные столбцы из TABLE2. Теперь у вас есть перекрестное соединение монстров каждой строки из TABLE1 против каждой строки из TABLE2. Не паникуйте Даже в масштабе PQ хорошо справляется с этим сценарием, лучше IMO, чем SQL или специализированные инструменты ETL, которым, как правило, требуется огромное количество памяти.

Во всяком случае, затем я бы использовал Добавить столбцы / Добавить условный столбец и указать:

Имя новой колонки: совпадающая строка

Если (столбец) ПРИЛОЖЕНИЯ содержит (столбец) РАЗМЕРЫ, то (значение) Да

Это даст вам столбец со значением "Да" только в соответствующих строках. Отфильтруйте эти значения и удалите все столбцы, которые вам не нужны, и все готово.

Всего строк кода = 0.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .