2013-12-18 4 views
1

Я хочу, чтобы этот запрос, чтобы вставить все различные даты Webshop в второй таблице, если они уже не существуют для интернет-магазина DataSetsзначения INSERT SQL, если они уже не существуют

Следующий запрос кажется игнорировать AND t1.[DataSet] = 'webshop' параметр и не вставлять новые значения интернет-магазина, поскольку они содержат одни и те же диапазоны дат, т.е. они оба содержат 01/02/2013

INSERT INTO [ImportedDateRange] ([DataSet],[DateRange]) 
select DISTINCT 'webshop', cast(T2.[OrderCreatedDate] as DATE) 
from webshop T2 
left join [ImportedDateRange] T1 
on cast(T2.[OrderCreatedDate] as DATE) = t1.[DateRange] 
where t1.[DateRange] is null 
AND t1.[DataSet] = 'webshop' 

Желаемый результат состоит в том, что она вводит дату Webshop диапазоны, только если они уже не существуют для интернет-магазина (это предотвращает повторяющиеся данные, если запрос выполняется дважды)

DataSet DataRange 
business 01/02/2013 
business 02/02/2013 
business 03/02/2013 
webshop 01/02/2013 
webshop 02/02/2013 
webshop 03/02/2013 
+0

использование предложения GROUP BY, Он группирует наборы данных –

+0

использовать а, где п ot и выберите из вашей таблицы вставки, соединяющей вашу таблицу, используемую для значений вставки, делая соединение на соответствующих клавишах) –

ответ

3

Вы должны двигаться t1.[DataSet] = 'webshop' условие к РЕГИСТРИРУЙТЕСЬ из WHERE класса

INSERT INTO [ImportedDateRange] ([DataSet],[DateRange]) 
select DISTINCT 'webshop', cast(T2.[OrderCreatedDate] as DATE) 
from webshop T2 
left join [ImportedDateRange] T1 
on cast(T2.[OrderCreatedDate] as DATE) = t1.[DateRange] 
     AND t1.[DataSet] = 'webshop' 
where t1.[DateRange] is null 
+0

спасибо! идеально!! – neeko

Смежные вопросы