I've been racking my brain on this and after several google searchs and attempts I can not get this to work. Basically the statement works fine but I want to run it daily and do not want it duplicating the results if they already exist in the table. Let me know if you guys can help me figure this one out. Thank you.
Code:
INSERT INTO Product_SpecificationAttribute_Mapping
(ProductId, SpecificationAttributeOptionId, AllowFiltering, ShowOnProductPage, DisplayOrder)
SELECT PD.Id AS ProductId,
sao.Id AS SpecificationAttributeOptionId,
'1' AS AllowFiltering,
'0' AS ShowOnProductPage,
sao.DisplayOrder AS DisplayOrder
FROM Product as PD
join (
select id,
name,
ymin as pcmin,
case when ymax < ymin then 99 else ymax end as pcmax,
case when ymax < ymin then 0 else ymin end as ccmin,
ymax as ccmax
from (
select id,
name,
convert(int, SUBSTRING(name, loc-2, 2)) as ymin,
convert(int, SUBSTRING(name, loc+1, 2)) as ymax
from (
select id,
name,
loc
from (
select id,
name,
CHARINDEX('-', name) as loc
from PRODUCT
where CHARINDEX('-', name) > 0
) as tbl
where SUBSTRING(name, loc-3, 1) = ' '
and SUBSTRING(name, loc+3, 1) = ' '
) as rng
where convert(int, SUBSTRING(name, loc-2,2)) > 0
and convert(int, SUBSTRING(name, loc+1,2)) > 0
) as yrs
) as PdRng
on PdRng.id = PD.id
join (
select *
from SpecificationAttributeOption
where isnumeric(Name) > 0
and len(rtrim(Name)) = 4 AND SpecificationAttributeOption.SpecificationAttributeId = '7'
) as sao
ON convert(int, Right(sao.Name, 2)) between PdRng.pcmin and PdRng.pcmax
OR convert(int, Right(sao.Name, 2)) between PdRng.ccmin and PdRng.ccmax