2017-09-03 2 views
1

J'ai un résultat de MySQL après avoir rejoint deux tables comme suit: -MySQL Comment compter et Somme condtionally

 ID    || Category  ||  Cost  || 
========================||==================||==================|| 
AMWP/ABC/2016-17/1  ||  1   ||  123.88  || 
AMWP/CDF/2016-17/2  ||  2   ||  222.99  || 
AMWP/GHI/2016-17/3  ||  3   ||  133.90  || 
AMWP/ABC/2017-18/1  ||  1   ||  100.10  || 
AMWP/CDF/2017-18/2  ||  2   ||  200.20  || 
AMWP/GHI/2017-18/3  ||  3   ||  100.00  || 

Je veux extraire résumé comme par catergory et comte de chaque catergory et Somme des coûts pour seulement à la condition où ID a comme un des ABC/CDF/GHI et exercice Comme 2016-17/2017-18

Répondre

0

Je l'ai obtenu la façon dont je désirais. Dans le SQL suivant, j'utilise Sum au lieu de Count à Add 1 to TotWks chaque fois que la condition est True. Aussi, je juste Adding le Cost Field à TotCost chaque fois que la condition est True.

SELECT 
Category, 
SUM(if(ID LIKE '%2017-18%' AND ID like ‘%/ABC/%, 1, 0)) AS `TotWks`, 
SUM(if(ID LIKE '%2017-18%' AND ID like ‘%/ABC/%, `amwplist`.`Cost`, 0)) AS `TotCost` 
FROM <main_Table> 
LEFT OUTER JOIN <join_Table> ON <main_Table.ID> = <join_Table. ID> 
GROUP BY <main_Table.ID> 

Si j'omettez le GROUP BY article, alors je vais en grand total TotWks et TotCost.

Merci pour toute l'aide.

0
select category, sum(Cost) 
     from your_tables 
     where 
     (ID like ‘%/ABC/% or ID like ‘%/CDF%/’ or ID like ‘%/GHI/%’) 
     and 
     (ID like ‘%/2016-17/%’ or ID like ‘%/2017-18/%’) 
     and <joining condition> 
     group by category; 
+0

Monsieur mon exigence rencontreraient 'catégorie select, somme (coût) de your_tables où (ID comme '%/ABC /%) et (ID comme'%/2016-17 /%) et groupe par catégorie; 'mais MySQL lance une erreur à' et ' – Raky

+0

par condition de Je veux dire la condition que vous avez utilisée pour joindre 2 tables. Si j'ai bien compris votre question, il y a eu une adhésion. Si non, supprimez-le. – Jacob

+0

J'ai eu ce que vous dites monsieur mais MySQL lance une erreur. – Raky