Bonjour,
J'ai un problème avec une requête faisant appel à un GROUP BY. La voici :
INSERT INTO [...].[Délais de Facturation - France]
SELECT
Sum([Position de Bon de Livraison].[Quantité Livrée] * [Position de Bon de Livraison].[Prix Unitaire de Vente Brut en Euro] / 1000) AS [Montant Net],
Trim(Right([Position de Bon de Livraison].[Numéro de Facture], 7)) AS [Numéro de Facture],
Right([Position de Bon de Livraison].[Numéro de Bon de Livraison], 7) AS [Numéro de Bon de Livraison],
Right([Position de Bon de Livraison].[Numéro de Commande], 7) AS [Numéro de Commande],
[Position de Commande].[Code Client] AS [Code Client],
[Position de Commande].[Code Vendeur] AS [Code Vendeur],
(Right(Str([Position de Bon de Livraison].[Date de Facturation]), 2) & "/" & Mid(Str([Position de Bon de Livraison].[Date de Facturation]), 6, 2) & "/" & Mid(Str([Position de Bon de Livraison].[Date de Facturation]), 2, 4)) AS [Date de Facturation],
[En-tête de Commande].[Code de Bloquage] AS [Code de Bloquage],
IIf([En-tête de Commande].[Date de Débloquage] <> 0, Right(Str([En-tête de Commande].[Date de Débloquage]), 2) & "/" & Mid(Str([En-tête de Commande].[Date de Débloquage]), 6, 2) & "/" & Mid(Str([En-tête de Commande].[Date de Débloquage]), 2, 4)) AS [Date de Débloquage],
[En-tête de Commande].[Code du Responsable] AS [Code Secrétaire],
[Client].[Raison Sociale 1] AS [Raison Sociale],
(Right(Str([Position de Commande].[Délai Confirmé]), 2) & "/" & Mid(Str([Position de Commande].[Délai Confirmé]), 6, 2) & "/" & Mid(Str([Position de Commande].[Délai Confirmé]), 2, 4)) AS [Délai Confirmé Actuel],
(Right(Str([En-tête de Bon de Livraison].[Date d'Edition]), 2) & "/" & Mid(Str([En-tête de Bon de Livraison].[Date d'Edition]), 6, 2) & "/" & Mid(Str([En-tête de Bon de Livraison].[Date d'Edition]), 2, 4)) AS [Date d'Expédition],
(Right(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2) & "/" & Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 6, 2) & "/" & Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2, 4)) AS [Date du Mouvement de Stock],
IIf(Weekday(DateSerial(Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2, 4), Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 6, 2), Right(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2)) , 2) = 1, "Lundi", IIf(Weekday(DateSerial(Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2, 4), Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 6, 2), Right(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2)) , 2) = 2, "Mardi", IIf(Weekday(DateSerial(Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2, 4), Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 6, 2), Right(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2)) , 2) = 3, "Mercredi", IIf(Weekday(DateSerial(Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2, 4), Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 6, 2), Right(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2)) , 2) = 4, "Jeudi", IIf(Weekday(DateSerial(Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2, 4), Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 6, 2), Right(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2)) , 2) = 5, "Vendredi", IIf(Weekday(DateSerial(Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2, 4), Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 6, 2), Right(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2)) , 2) = 6, "Samedi", IIf(Weekday(DateSerial(Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2, 4), Mid(Str([Position de Bon de Livraison].[Date de Mise à jour]), 6, 2), Right(Str([Position de Bon de Livraison].[Date de Mise à jour]), 2)) , 2) = 7, "Dimanche"))))))) AS [Jour du Mouvement de Stock]
FROM (((([Position de Bon de Livraison] INNER JOIN [Position de Commande] ON [Position de Bon de Livraison].[Numéro de Position de Commande] = [Position de Commande].[Numéro de Position de Commande]) INNER JOIN [En-tête de Commande] ON [Position de Bon de Livraison].[Numéro de Commande] = [En-tête de Commande].[Numéro de Commande]) INNER JOIN Client ON [Position de Commande].[Code Client] = Client.[Code Client]) INNER JOIN [En-tête de Bon de Livraison] ON [Position de Bon de Livraison].[Numéro de Bon de Livraison] = [En-tête de Bon de Livraison].[Numéro de Bon de Livraison]) LEFT JOIN [Adresse de Livraison] ON [Position de Bon de Livraison].[Numéro de Commande] = [Adresse de Livraison].[Numéro de Commande]
WHERE Val(Mid(Str([Position de Bon de Livraison].[Date de Facturation]), 6, 2)) = Month(Date()) AND Val(Mid(Str([Position de Bon de Livraison].[Date de Facturation]), 2, 4)) = Year(Date()) AND (([Adresse de Livraison].[Numéro de Commande] <> NULL AND [Adresse de Livraison].[Code Pays] = "FR") OR (IsNull([Adresse de Livraison].[Numéro de Commande]) AND [En-tête de Bon de Livraison].[Code Pays] = "FR")) AND Trim([Position de Bon de Livraison].[Numéro de Facture]) <> ""
GROUP BY ([Position de Bon de Livraison].[Numéro de Facture];
Elle est particulièrement lourde. Je m'en excuse et remercie ceux qui auront eu le courage de se pencher dessus...
Le problème avec cette requête c'est que je reçois un message d'erreur : "You tried to execute a query that does not include Trim(Right([Position de Bon de Livraison].[Numéro de Facture], 7)) as part of an aggregate function".
Le principe de ma requête est de regrouper tous mes enregistrements par numéro de facture et de faire la somme de leur montant net (que je calcule directement).
Au sujet de cette erreur, j'ai trouvé cette page, http://www.developpez.net/forums/viewtopic.php?t=199243, mais je n'arrive pas à appliquer la solution à ma requête.
Quelqu'un pourrait-il m'aider?
Partager