У меня есть таблица с двумя полями, которые являются уникальным ключом, но ключи в этой таблице мне не нужны, потому что мне нужны два других поля, которые не включены в эту таблицу (Jda_sourcing).Я создал запрос, который, я думаю, даст мне то, что мне нужно, но я не уверен.Я бежал, и ошибок нет, но мне интересно, так ли это?
Это длинный запрос, поэтому я не буду все включать.Я хочу, чтобы составным ключом был BrandNum и поставщик сайта.Эти столбцы отсутствуют в таблице Jda_sourcing.Элемент является общим для обеих таблиц.Я не уверен, стоит ли идти этим путем, поэтому я публикую этот вопрос.
SELECT COUNT(*),
item,
source,
dest
FROM [dq].[jda_sourcing] AS js
WHERE [item] IN (SELECT [item]
FROM [dq].[jda_udt_item_local]
WHERE
--EXISTS
[u_brand] IN (SELECT TOP 100
itm.u_brand AS BrandNum
FROM (SELECT lnk.material,
loc.plant,
loc.storagelocation,
lnk.purchasingstatus,
lnk.sellingstatus,
lnk.sitevendor,
CASE WHEN ssc.material IS NOT NULL THEN 'SSC' ELSE 'DIRECT' END AS source
FROM scm.sap_marc AS lnk
JOIN (SELECT DISTINCT
loc AS plant,
RIGHT(location_id, 4) AS storagelocation,
loc_type
FROM dq.static_location
WHERE loc IS NOT NULL
AND loc_status = 'A'
AND loc_type = 'FWD') AS loc ON loc.plant = lnk.plant
LEFT JOIN scm.sap_mard AS ssc ON ssc.plant = loc.plant
AND ssc.material = lnk.material
AND ssc.sscvalidfrom <= CONVERT(varchar(8), GETDATE(), 112)
AND ssc.sscvalidto >= CONVERT(varchar(8), GETDATE(), 112)
LEFT JOIN scm.sap_zdt_mm_source AS src ON src.plant = lnk.plant
AND src.material = lnk.material
AND (lnk.sitevendor = src.vendor
OR ssc.material IS NOT NULL
OR LEN(src.vendor) = 4)
AND src.validfromdate <= CONVERT(varchar(8), GETDATE(), 112)
AND src.validtodate >= CONVERT(varchar(8), GETDATE(), 112)
WHERE lnk.purchasingstatus IN ('P', 'U', 'W')
AND src.material IS NULL) AS msrc
LEFT JOIN dq.jda_udt_item_local AS itm ON itm.item = msrc.material
LEFT JOIN scm.sap_mara AS ssn ON ssn.material = msrc.material
AND ssn.supercedeeffdate <= GETDATE()
LEFT JOIN (SELECT item,
dest,
tier1,
gs_source,
supplier,
otc_status,
u_inco_term
FROM [flmir-jdasqldv1].scdq.dq.jda_sku_sourcing AS SKUSRC
JOIN [flmir-jdasqldv1].scdq.dq.jda_udt_loc AS LOC ON LOC.loc = SKUSRC.tier1
WHERE tier1 <> ''
--and otc_status in ('AA','AH','IN','IF','IH')
) AS lss ON lss.item = msrc.material
AND lss.dest = CAST(msrc.plant AS varchar) + '-' + CAST(msrc.storagelocation AS varchar)
LEFT JOIN scm.ci_corpitem AS ci ON ci.item = msrc.material
--left join [dq].[jda_sourcing]js on js.[item]=msrc.material
--and js.[dest]= cast(msrc.plant as varchar) + '-' + cast(msrc.storagelocation as varchar)
LEFT JOIN temp.lg_sourcing_xref AS lgs ON lgs.item = msrc.material
AND lgs.plant = CAST(msrc.plant AS varchar)
AND lgs.sloc = CAST(msrc.storagelocation AS varchar)
WHERE ISNULL(itm.u_prod_class, 0) NOT IN (40, 85, 86, 94, 96, 99)
AND ISNULL(itm.u_brand, 0) <> '9999'))
AND LEN(source) = 13
GROUP BY item,
source,
dest
UNION ALL
SELECT COUNT(*),
item,
source,
dest
FROM [dq].[jda_sourcing] AS js
WHERE [item] IN (SELECT [material]
FROM [scm].[sap_marc]
WHERE
--EXISTS
[sitevendor] IN (SELECT TOP 100
msrc.sitevendor AS SiteVendor
FROM (SELECT lnk.material,
loc.plant,
loc.storagelocation,
lnk.purchasingstatus,
lnk.sellingstatus,
lnk.sitevendor,
CASE WHEN ssc.material IS NOT NULL THEN 'SSC' ELSE 'DIRECT' END AS source
FROM scm.sap_marc AS lnk
JOIN (SELECT DISTINCT
loc AS plant,
RIGHT(location_id, 4) AS storagelocation,
loc_type
FROM dq.static_location
WHERE loc IS NOT NULL
AND loc_status = 'A'
AND loc_type = 'FWD') AS loc ON loc.plant = lnk.plant
LEFT JOIN scm.sap_mard AS ssc ON ssc.plant = loc.plant
AND ssc.material = lnk.material
AND ssc.sscvalidfrom <= CONVERT(varchar(8), GETDATE(), 112)
AND ssc.sscvalidto >= CONVERT(varchar(8), GETDATE(), 112)
LEFT JOIN scm.sap_zdt_mm_source AS src ON src.plant = lnk.plant
AND src.material = lnk.material
AND (lnk.sitevendor = src.vendor
OR ssc.material IS NOT NULL
OR LEN(src.vendor) = 4)
AND src.validfromdate <= CONVERT(varchar(8), GETDATE(), 112)
AND src.validtodate >= CONVERT(varchar(8), GETDATE(), 112)
WHERE lnk.purchasingstatus IN ('P', 'U', 'W')
AND src.material IS NULL) AS msrc
LEFT JOIN dq.jda_udt_item_local AS itm ON itm.item = msrc.material
LEFT JOIN scm.sap_mara AS ssn ON ssn.material = msrc.material
AND ssn.supercedeeffdate <= GETDATE()
LEFT JOIN (SELECT item,
dest,
tier1,
gs_source,
supplier,
otc_status,
u_inco_term
FROM [flmir-jdasqldv1].scdq.dq.jda_sku_sourcing AS SKUSRC
JOIN [flmir-jdasqldv1].scdq.dq.jda_udt_loc AS LOC ON LOC.loc = SKUSRC.tier1
WHERE tier1 <> ''
--and otc_status in ('AA','AH','IN','IF','IH')
) AS lss ON lss.item = msrc.material
AND lss.dest = CAST(msrc.plant AS varchar) + '-' + CAST(msrc.storagelocation AS varchar)
LEFT JOIN scm.ci_corpitem AS ci ON ci.item = msrc.material
--left join [dq].[jda_sourcing]js on js.[item]=msrc.material
--and js.[dest]= cast(msrc.plant as varchar) + '-' + cast(msrc.storagelocation as varchar)
LEFT JOIN temp.lg_sourcing_xref AS lgs ON lgs.item = msrc.material
AND lgs.plant = CAST(msrc.plant AS varchar)
AND lgs.sloc = CAST(msrc.storagelocation AS varchar)
WHERE ISNULL(itm.u_prod_class, 0) NOT IN (40, 85, 86, 94, 96, 99)
AND ISNULL(itm.u_brand, 0) <> '9999'))
AND LEN(source) = 13
GROUP BY item,
source,
dest;