arvindcis Ответов: 1

Как применить левое соединение на основе case


У меня есть 3 таблицы Product, DailyProduct и Location
Таблица продукт главная таблица содержит столбец [Кодтовара, наименование, код, идентификатор locationId]
таблица DailyProduct содержит столбец [DailyProductId, ProductName, ProductCode,
CreatedOn] и расположение таблицы содержит столбец [LocationId, LocationCode, LocationName]

Я должен показать данные dbo.DailyProduct от имени case bases
Если Ежедневный Продукт.Создана&ГТ; '2018-01-01 а потом подавать заявку на вступление с марка еще объединиться с код продукта.


Это не работает заранее спасибо

Что я уже пробовал:

select DP.ProductName, DP.ProductCode FROM [dbo].[DailyProduct] DP
CASE WHEN DP.CreatedOn <= '2018-01-01' THEN  
LEFT JOIN Product P ON DP.ProductName = P.Name
ELSE LEFT JOIN ProductP ON DP.ProductCode = P.Code 

1 Ответов

Рейтинг:
1

MadMyche

Не зная больше о схемах и данных, можно было бы найти различные способы достижения желаемого

Один из способов (в зависимости от того, что вам действительно нужно) - это просто сделать 2 левых соединения со сложной связью между таблицами

SELECT Distinct dp.ProductName, dp.ProductCode
FROM   DailyProduct  dp
LEFT JOIN Product  p1 ON dp.CreatedOn <= '2018-01-01' AND dp.ProductName = p1.Name
LEFT JOIN ProductP p2 ON dp.CreatedOn >  '2018-01-01' AND dp.ProductCode = p2.Code


Maciej Los

5ed!