Bonjour,
Je me trouve face à un problème. J'ai une requête avec certains champs calculés et j'aimerais n'avoir qu'un seul résultat pour un champ donné.
Je vous donne la requête :

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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
SELECT iif ((MAJDILICOM.dbo.fichier_dilicom.taux_tva2  <> ''), MAJDILICOM.dbo.fichier_dilicom.EAN13_art+'TVA1',MAJDILICOM.dbo.fichier_dilicom.EAN13_art) as codearticle,
REPLACE(RTRIM (MAJDILICOM.dbo.fichier_dilicom.lib_etendu),Char(34),'') AS Designation,
'LIBRAIRIE' AS Famille,
LEFT(MAJDILICOM.dbo.FamilleClilThèmeComplet.SousFamille,50) AS SousFamille,
'1' AS Qte_mini,
'N' AS multiple_qte,
rtrim(MAJDILICOM.dbo.fichier_dilicom.ref_four) AS codebarre,
'N' AS report_famille,
CodeTva.codetva AS tvanat,
REPLACE(ROUND(CAST(CONVERT(float, fichier_dilicom.montant_ht1) / 1000 AS decimal(6, 2)), 2), '.', ',')AS PA,
/*REPLACE(ROUND(CAST(CONVERT(float, fichier_dilicom.montant_ht1) / 1000 AS decimal(6, 2)), 2), '.', ',') AS PA,*/
IIf(MAJDILICOM.dbo.fichier_dilicom.[collection] Is Not Null,Replace(MAJDILICOM.dbo.fichier_dilicom.[collection],Char(34),''), NULL) AS Collection,
iif (Left(MAJDILICOM.dbo.FamilleClilThèmeComplet.[Catégorie],50)is NULL,'',Left(MAJDILICOM.dbo.FamilleClilThèmeComplet.[Catégorie],50)) AS Cat,
iif (Left(MAJDILICOM.dbo.FamilleClilThèmeComplet.[Classe],50)is NULL,'',Left(MAJDILICOM.dbo.FamilleClilThèmeComplet.[Classe],50)) AS Cla,
iif (Left(MAJDILICOM.dbo.FamilleClilThèmeComplet.[Nature],50)is NULL,'',Left(MAJDILICOM.dbo.FamilleClilThèmeComplet.[Nature],50)) AS Nat,
Replace(MAJDILICOM.dbo.fichier_dilicom.[editeur],Char(34),'') AS MarqueEditeur,
IIf(MAJDILICOM.dbo.fichier_dilicom.[code_mouv]='S','N','O') AS Actif,
iif(MAJDILICOM.dbo.fichier_dilicom.[epaisseur] ='    ','0',MAJDILICOM.dbo.fichier_dilicom.[epaisseur]) AS Longueur,
iif(MAJDILICOM.dbo.fichier_dilicom.[largeur] ='    ','0',MAJDILICOM.dbo.fichier_dilicom.[largeur]) AS Largeur,
iif(MAJDILICOM.dbo.fichier_dilicom.[hauteur] ='    ','0',MAJDILICOM.dbo.fichier_dilicom.[hauteur]) AS Hauteur,
'0,001000000' AS UnitéMesure,
iif(MAJDILICOM.dbo.fichier_dilicom.[poids] ='    ','0', MAJDILICOM.dbo.fichier_dilicom.[poids] )AS Poids,
'1' AS UnitéPoids,
fichier_dilicom.commandable,
iif(MAJDILICOM.dbo.CodeRetour.libellé is NULL,'', MAJDILICOM.dbo.CodeRetour.libellé) AS CodeRetour,
IIf(MAJDILICOM.dbo.fichier_dilicom.[coll_serielle] Is Not Null,Replace(MAJDILICOM.dbo.fichier_dilicom.[coll_serielle],Char(34),''),'') AS CollectionSerielle,
Replace(MAJDILICOM.dbo.fichier_dilicom.[auteur],Char(34),'') AS Auteur,
CodeDispo.libellé,
CodeTva.codetva AS tvacomptoir,
CodeTva.codetva AS tvacee,
CodeTva.codetva AS tvaexp,
CodeTva.codetva AS tvadiv,
CodeTva.CompteVente AS cptnat,
CodeTva.CompteVente AS cptcomptoir,
CodeTva.CompteVente AS cptcee,
CodeTva.CompteVente AS cptexp,
CodeTva.CompteVente AS cptdiv,
'O' AS autvent,
'S' AS modstk,
'O' AS esc,
'O' AS com,
'O' AS rem,
'O' AS stat,
'O' AS stock,
MAJDILICOM.dbo.fichier_dilicom.isbn_article AS ISBN,
IIf(MAJDILICOM.dbo.fichier_dilicom.taux_tva2 <>'',concat(MAJDILICOM.dbo.fichier_dilicom.EAN13_art,'TVA2'),'') AS ArtSuiv,
REPLACE(RTRIM (MAJDILICOM.dbo.fichier_dilicom.libelle),Char(34),'') AS designation2,
'' AS description,
iif(MAJDILICOM.dbo.fichier_dilicom.eau_produit_lie is null , '',MAJDILICOM.dbo.fichier_dilicom.eau_produit_lie) AS Artremplacement,
iIf(MAJDILICOM.dbo.fichier_dilicom.code_mouv='S','O','N') AS SupDilicom,
IIf(MAJDILICOM.dbo.fichier_dilicom.date_fin_com Is Null Or MAJDILICOM.dbo.fichier_dilicom.date_fin_com='','01/01/1900',Right(MAJDILICOM.dbo.fichier_dilicom.date_fin_com,2) + '/' + right(left(MAJDILICOM.dbo.fichier_dilicom.date_fin_com,6),2) + '/' + Left(MAJDILICOM.dbo.fichier_dilicom.date_fin_com,4)) AS DateFinCom,
iif (MAJDILICOM.dbo.fichier_dilicom.[impression_demande]='1','O','N') AS ImpressionDemande,
iif ((MAJDILICOM.dbo.fichier_dilicom.[impression_demande]='1' OR MAJDILICOM.dbo.fichier_dilicom.[eau_produit_lie] <> ''),'O','N') AS Alerte,
iif (MAJDILICOM.dbo.fichier_dilicom.[impression_demande]='1','ATTENTION : Titre en impression à la demande',iif (MAJDILICOM.dbo.fichier_dilicom.[eau_produit_lie] <> '','ATTENTION : Titre remplacé par '+MAJDILICOM.dbo.fichier_dilicom.eau_produit_lie,'')) AS AlerteMessage,
iif ((MAJDILICOM.dbo.fichier_dilicom.[eau_produit_lie] <> '' OR MAJDILICOM.dbo.CodeDispo.libellé='arrêt définitif de commercialisation'),'N','O') as SitePart,
iif ((MAJDILICOM.dbo.fichier_dilicom.[eau_produit_lie] <> '' OR MAJDILICOM.dbo.CodeDispo.libellé='arrêt définitif de commercialisation'),'N','O') as SiteEcole,
iif ((MAJDILICOM.dbo.fichier_dilicom.[eau_produit_lie] <> '' OR MAJDILICOM.dbo.CodeDispo.libellé='arrêt définitif de commercialisation'),'N','O') as EnLigne
FROM            CodeDispo INNER JOIN
                         fichier_dilicom ON CodeDispo.code = fichier_dilicom.code_dispo INNER JOIN
                         FamilleClilThèmeComplet ON fichier_dilicom.theme = FamilleClilThèmeComplet.Thème INNER JOIN
                         CodeTva ON fichier_dilicom.taux_tva1 = CodeTva.libellé INNER JOIN
                         CodeRetour ON fichier_dilicom.code_retour = CodeRetour.codeRetour
WHERE        (fichier_dilicom.code_mouv <> 'S') AND (fichier_dilicom.GENCOD_distributeur <> '3130630000006') AND  (fichier_dilicom.type_produit = '01' OR (fichier_dilicom.type_produit = '02')) AND (fichier_dilicom.type_prix = '4') AND 
                         (fichier_dilicom.pres_magasin <> '03')  AND (fichier_dilicom.taux_tva1 <> '')  and CONVERT(datetime, fichier_dilicom.date_tarif) <= CAST(CONVERT(CHAR(8), GETDATE(), 112) AS DATETIME)
GROUP BY fichier_dilicom.EAN13_art, fichier_dilicom.lib_etendu, FamilleClilThèmeComplet.SousFamille, fichier_dilicom.ref_four, CodeTva.codetva, fichier_dilicom.collection, FamilleClilThèmeComplet.Catégorie, 
                         FamilleClilThèmeComplet.Classe, FamilleClilThèmeComplet.Nature, fichier_dilicom.editeur, fichier_dilicom.epaisseur, fichier_dilicom.largeur, fichier_dilicom.hauteur, fichier_dilicom.poids, 
                         fichier_dilicom.commandable, fichier_dilicom.auteur, CodeDispo.libellé, CodeRetour.libellé, fichier_dilicom.coll_serielle, CodeTva.CompteVente, fichier_dilicom.isbn_article, 
                         fichier_dilicom.libelle, fichier_dilicom.eau_produit_lie, fichier_dilicom.date_fin_com,fichier_dilicom.code_mouv,fichier_dilicom.impression_demande,fichier_dilicom.taux_tva2, fichier_dilicom.date_tarif, fichier_dilicom.montant_ht1
						 having  CONVERT(datetime, fichier_dilicom.date_tarif) <= CAST(CONVERT(CHAR(8), GETDATE(), 112) AS DATETIME)
J'ai besoin de sélectionner qu'une seule fois le codearticle car dans le logiciel que je l'intègre, ce champ est la clé primaire. donc mon fichier ne doit pas contenir de doublons.

La table à partir de laquelle j'extrais ces données peut avoir plusieurs fois le même code article et ceux sont les autres champs qui sont différents. Par contre dans les résultats de la requête exposée ce dessus, je ne dois avoir qu'un seul résultat par codearticle.
J'ai déjà essayé d'ajouter DISTINCT dans mon SELECT mais ça ne change rien et je n'arrive pas à avoir qu'un seul champ dans le Group by.

Auriez vous une idée?

D'avance, merci pour votre aide.

Julien