SOMME dans Sous Requete avec case ????

cs_AsNiPeR Messages postés 14 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 19 mai 2015 - 19 mai 2015 à 16:06
cs_AsNiPeR Messages postés 14 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 19 mai 2015 - 19 mai 2015 à 18:46
Bonjour tout le monde,

depuis une semaine, que je cherche et recherche, dans tout ce que le net me fournis comme Info, mais sans aucun résultat concluant sur ma requête SQL.
voici mon code


SELECT SUM(M1.Qtn * P1.PxV) * (A.Tau/100) * (1 + (SELECT DISTINCT A2.Tau From "TabTaxId" A2 INNER JOIN "TabTaxAp" T2 ON A2.Tax = T2.Tax INNER JOIN "TabMvP" M2 ON T2.RfDoc = M2.RfDoc WHERE A2.Tax <> 'TMB')/100) TB,
CASE TB WHEN TB <= 2500 THEN TB ELSE '2500,00' END
FROM "TabPrx" P1 INNER JOIN "TabMvP" M1 ON P1.Cp = M1.Cp
INNER JOIN "TabFac" F2 ON M1.RfDoc = F2.RfDoc
INNER JOIN "TabTAxAp" T ON F2.RfDoc = T.RfDoc
INNER JOIN "TabTaxId" A ON T.Tax = A.Tax
WHERE A.Tax = 'TMB'
Group BY M1.RfDoc

le but de cette requête est d'afficher les montants inférieurs ou égales a 2500
si non elle affiche uniquement 2500,00.
si je l'exécute sans le "case" elle m'affiche le résulta exacte du calcule, donc mon problème se situe dans la formulation de case, pour info cette requête sera elle même imbriqué dans une autre
si une personne peut m'aider ou m'orienter elle serait la bien venus
A voir également:

1 réponse

cgandco Messages postés 219 Date d'inscription mercredi 26 octobre 2011 Statut Membre Dernière intervention 22 juin 2017 9
Modifié par cgandco le 19/05/2015 à 16:59
Bonjour,

tu as un group by M1.RfDoc qui n'est pas dans la liste des champs a afficher ?

tu as un TB qui est un nombre, mélangé avec '2500,00' qui est un texte ?

1 + '2500,00' nombre + texte ça fonctionne et multiplié par la suite ?

tu es certain que comme ça, cela fonctionne ?

SELECT SUM(M1.Qtn * P1.PxV) * (A.Tau/100) * 
(1 + 
(SELECT DISTINCT A2.Tau
From "TabTaxId" A2 INNER JOIN "TabTaxAp" T2 ON A2.Tax = T2.Tax INNER JOIN "TabMvP" M2 ON T2.RfDoc = M2.RfDoc 
WHERE A2.Tax <> 'TMB')/100)
 
FROM "TabPrx" P1 INNER JOIN "TabMvP" M1 ON P1.Cp = M1.Cp 
			  INNER JOIN "TabFac" F2 ON M1.RfDoc = F2.RfDoc
			  INNER JOIN "TabTAxAp" T ON F2.RfDoc = T.RfDoc
			  INNER JOIN "TabTaxId" A ON T.Tax = A.Tax 
WHERE A.Tax = 'TMB'
Group BY M1.RfDoc



Je n'ai pas testé.

Bonne journée


Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
0
cs_AsNiPeR Messages postés 14 Date d'inscription mardi 31 janvier 2006 Statut Membre Dernière intervention 19 mai 2015 1
Modifié par cs_AsNiPeR le 19/05/2015 à 19:29
merci pour ta réponse rapide

Pour le RfDoc j'ai pas besoin de l'afficher puis que c'est une sous requête et donc j'ai besoin uniquement du résulta du calcul

Pour le TB effectivement c'est un nombre, le texte c'était mon dernier test avant que je pose ma question, et j'ai fait un copier/coller

Pour

1 + '2500,00' nombre + texte ça fonctionne et multiplié par la suite ?

J'ai pas bien compris ce que tu veut dire???

OUI elle s'exécuter très très bien cette requête sans le "CASE"

Aussi pour plus de clarté
      • "TabTaxId" table pour les coordonnées des taxes

TaxId
Libellé
Tau
dans cette table existe une taxe applicable aux factures payable en espèce "Timbre Fiscal" qui est plafonnée a 2500, alors je doit prendre en considération que les montants inférieurs ou égales a 2500 si non je plafone a 2500
      • "TabTaxAp" Table de jointure ( RfDoc,TaxId)
      • "TabFac" Table des factures

RfDoc
Clt_Id
Dat_Doc
      • "TabMvP" Table pour les produits sites dans la facture

Cp
Qtn
RfDoc
      • "TabPrx" Table de référence de prix de produit

Cp_Id
PxV

@+
0
Rejoignez-nous