2017-07-03 7 views
0

J'ai une table qui affiche toutes les mises à jour de l'inventaire:Afficher SQL Mises à jour de l'inventaire

 
╔══════════════╦════════╦══════════╦═══════╗ 
║ ItemName ║ Type ║ Quantity ║ Date ║ 
╠══════════════╬════════╬══════════╬═══════╣ 
║ BottledWater ║ Add ║  50 ║ 07/03 ║ 
║ BottledWater ║ Deduct ║  20 ║ 07/03 ║ 
║ Chips  ║ Add ║  30 ║ 07/02 ║ 
║ BottledWater ║ Deduct ║  10 ║ 07/02 ║ 
║ Chips  ║ Deduct ║  20 ║ 07/01 ║ 
╚══════════════╩════════╩══════════╩═══════╝ 

Je voudrais écrire une requête et retourner une table qui affiche le total d'un des éléments stocks ajoutés et déduits , la table ressemblerait à quelque chose comme:

 
╔══════════════╦═══════╦══════════╗ 
║ ItemName ║ Added ║ Deducted ║ 
╠══════════════╬═══════╬══════════╣ 
║ BottledWater ║ 50 ║  30 ║ 
║ Chips  ║ 30 ║  20 ║ 
╚══════════════╩═══════╩══════════╝ 

Des idées?

+0

https://www.google.com/search?q=learn + sql –

Répondre

0

Il suffit d'utiliser l'agrégation conditionnelle:

select item, 
     sum(case when type = 'Add' then quantity else 0 end) as added, 
     sum(case when type = 'Deduct' then quantity else 0 end) as deducted 
from inventory 
group by item; 
0

La syntaxe est légèrement, mais c'est le pseudo-code:

select ItemName, sum(Type==add) as added, sum(Type==deduct) as deducted, from inventory group by ItemName