-1
votes

Obtenez la somme de la table des détails

J'ai besoin de récupérer un enregistrement principal ensemble la somme de ses détails. Voici les définitions de deux tables:

Tableau maître (maître) p> xxx pré>

exemple d'enregistrement: p> xxx pré>

détails Table (Détails) P>

SELECT m.id, m.name ,
SUM(CASE when type='red' then quantity end) as redsum,
SUM(CASE when type='blue' then quantity end) as bluesum
from mydetails as t
inner join mymaster as m
on m.id = t.master_id
GROUP BY m.id, m.name


2 commentaires

Pouvez-vous expliquer ce que vous entendez par "comment je peux écrire une requête"? Si vous pouvez écrire une procédure stockée - vous pouvez écrire la requête alors


@Fabio, je suis capable d'écrire de simples déclarations SQL. Je comprends qu'avec les procédures stockées, vous faites presque tout. Mais je veux juste avoir une seule déclaration sur les données et je ne sais pas comment le faire.


3 Réponses :


0
votes

Il suffit d'utiliser un groupe par xxx

et utilisez pivot pour afficher chaque produit dans une ligne xxx


1 commentaires

Merci pour votre contribution. J'ai testé votre code. La deuxième déclaration ne fonctionne pas. En outre, j'ai besoin d'une seule déclaration avec les résultats comme indiqué dans le poteau.



0
votes

Si je vous obtiens correctement, vous recherchez un pivot, dans ce cas, vous pouvez utiliser case code> comme suivant xxx pré>

si vous voulez simplement une quantité totale de Tapez ensuite Utilisez le suivant P>

select
    master_id,
    type,
    sum(quantity) as total_quantity
from yourTable
group by
    master_id,
    type


1 commentaires

Merci de m'avoir aidé. Votre première déclaration est proche, mais elle manque le champ Nom dans la table principale. J'ai besoin d'une seule déclaration.



1
votes

Vous pouvez utiliser une fonction de concession avec le groupe en pour obtenir des résultats comme une instruction unique.

+-----------+--------+---------+
|   name    | redsum | bluesum |
+-----------+--------+---------+
| Product10 |     13 |      16 |
+-----------+--------+---------+


2 commentaires

Merci. La table principale peut contenir plusieurs enregistrements avec différents produits. Ainsi, nous ne pouvons pas avoir un "produit" fixe. Pas besoin de "(somme de rouge)" ou "(somme de bleu)". Ils sont juste des explications.


Vous avez manqué la colonne ID dans la table principale. Je l'ai ajouté et j'ai mis à jour le poste. Merci!