Bonjour à tous,
Je suis nouvelle sur le forum alors n'hésitez pas à me guider si je ne suis pas sur le bon forum ou si ma question a déjà été abordée.
Je vous demande de l'aide car je suis débutante sur SQL et je rencontre le problème suivant :
Données que j'ai:
- Une table temporaire #TEMP_NF (3 colonnes : article1, numProd, numSérie)
- Une table temporaire #TEMP_NP (3 colonnes: article2, numProd, numSérie)
Ce que je voudrais:
Un résultat sous forme d'une table de 4 colonnes qui comporte pour un même numProd, les articles en écart dans les 2 tables temporaires, ie:
- Colonne 1: articles dans #TEMP_NF non existants dans #TEMP_NP
- Colonne 2: articles dans #TEMP_NP non existants dans #TEMP_NF
- Colonne 3: numProd correspondant
- Colonne 4: numSérie correspondant
Ce que j'ai essayé et qui ne marche pas du tout (je ne suis pas à l'aise dans les jointures):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 SELECT DISTINCT ITEMID AS 'AT dans NP et pas dans NF', BENPRICINGITEM AS 'AT dans NF et pas dans NP', #TEMP_NP.COLLECTREFPRODID, #TEMP_NP.BENPRODGROUPNUMBER FROM #TEMP_NP LEFT JOIN #TEMP_NF ON #TEMP_NP.COLLECTREFPRODID = #TEMP_NF.COLLECTREFPRODID UNION SELECT DISTINCT ITEMID AS 'AT dans NP et pas dans NF', BENPRICINGITEM AS 'AT dans NF et pas dans NP', #TEMP_NF.COLLECTREFPRODID, #TEMP_NF.BENPRODGROUPNUMBER FROM #TEMP_NF LEFT JOIN #TEMP_NP ON #TEMP_NP.COLLECTREFPRODID = #TEMP_NF.COLLECTREFPRODID
Ma requête complète:
Pourriez-vous m'aiguiller sur la fonction à tester s'il vous plait?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 DECLARE @dateMin date DECLARE @dateMax date SET @dateMin = '03/10/2016' SET @dateMax = '07/10/2016' -- Liste des nomenclatures de production (NP) IF OBJECT_ID(N'tempdb..#TEMP_NP') IS NOT NULL DROP TABLE #TEMP_NP select A.itemid, b.COLLECTREFPRODID, b.BENPRODGROUPNUMBER INTO #TEMP_NP from BOM A INNER JOIN PRODTABLE B ON A.BOMID = B.BOMID WHERE LEN(A.ITEMID) >= 11 AND A.ITEMID NOT LIKE 'PL_%'AND B.COLLECTREFPRODID IN ( (SELECT Distinct C.COLLECTREFPRODID from PRODTABLE C WHERE C.SCHEDSTART BETWEEN @dateMin AND @dateMax AND C.ITEMID LIKE '%_PROD') ) -- Liste des nomenclatures fonctionnelles des MH_EXPE (NF) IF OBJECT_ID(N'tempdb..#TEMP_NF') IS NOT NULL DROP TABLE #TEMP_NF SELECT DISTINCT A.BENPRICINGITEM, B.COLLECTREFPRODID, B.BENPRODGROUPNUMBER INTO #TEMP_NF FROM PRODBOM A INNER JOIN PRODTABLE B ON B.PRODID = A.PRODID WHERE A.BENPRICINGITEM <> '' AND A.BENPRICINGITEM <> 'TPC' AND A.BENPRICINGITEM NOT LIKE 'T_%' AND B.COLLECTREFPRODID IN ( (SELECT Distinct C.COLLECTREFPRODID from PRODTABLE C WHERE C.SCHEDSTART BETWEEN @dateMin AND @dateMax AND C.ITEMID LIKE '%_PROD') ) SELECT DISTINCT ITEMID AS 'AT dans NP et pas dans NF', BENPRICINGITEM AS 'AT dans NF et pas dans NP', #TEMP_NP.COLLECTREFPRODID, #TEMP_NP.BENPRODGROUPNUMBER FROM #TEMP_NP LEFT JOIN #TEMP_NF ON #TEMP_NP.ITEMID = #TEMP_NF.BENPRICINGITEM UNION SELECT DISTINCT ITEMID AS 'AT dans NP et pas dans NF', BENPRICINGITEM AS 'AT dans NF et pas dans NP', #TEMP_NF.COLLECTREFPRODID, #TEMP_NF.BENPRODGROUPNUMBER FROM #TEMP_NF LEFT JOIN #TEMP_NP ON #TEMP_NP.ITEMID = #TEMP_NF.BENPRICINGITEM
N'hésitez pas à revenir vers moi s'il manque des précisions.
Merci par avance pour votre aide.
Bon après-midi à vous.
Partager