Как обработать объединение с двумя потенциальными столбцами - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть прямой SQL-оператор, который объединяет несколько таблиц, чтобы получить метаданные об элементах в контейнере.У меня проблема в том, что tableTwo теперь имеет поле, которое заменяет productid (назовем его masterProductId), если оно заполнено, и поэтому мы хотим присоединить one.productid к этому столбцу вместо этой строки.Если masterProductId не используется, он обычно остается пустым, но не нулевым.Я не уверен, как обрабатывать потенциально разные объединения в одном утверждении.Вот суть заявления без попытки добавления в masterProductId

select distinct one.code from tableOne one
inner join tableTwo two on two.productid = one.productid
inner join tableThree three on three.itemguid = two.itemguid
where three.wrhscontrid = @containerId
and one.statecode = '' 

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018
inner join tableTwo two on coalesce(two.masterproductid, two.productid) = one.productid
0 голосов
/ 14 декабря 2018

Итак, позвольте мне повторить это:

  1. В таблице два есть masterProductKey.
  2. Если в нем есть значение, используйте его для присоединения к Product.
  3. Если нет, то присоединитесь с ключом продукта

Вот решение:

join tableTwo two 
      on case when masterProductKey!='' 
              then masterProductKey 
              else two.productid end = one.ProductID
...