Maison >base de données >tutoriel mysql >Comment additionner efficacement les valeurs de rachat par ID de transaction en fonction de la date de valeur dans SQL ?

Comment additionner efficacement les valeurs de rachat par ID de transaction en fonction de la date de valeur dans SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-16 11:14:10448parcourir

How to Efficiently Sum Cash Values by Transaction ID Based on Value Date in SQL?

Calcul de la somme avec des dates de valeur conditionnelles

Dans une instruction SQL, vous souhaitez calculer le montant total en espèces pour chaque ID de transaction unique au cours de la dernière mois. Pour y parvenir, vous devez modifier un relevé existant pour inclure la condition selon laquelle seules les valeurs de rachat dont la date de valeur est postérieure à une date spécifique doivent être incluses.

Pour résoudre ce problème, vous avez tenté d'utiliser l'instruction CASE, mais a rencontré une erreur en raison d'une syntaxe incorrecte.

La syntaxe correcte pour l'expression CASE recherchée est :

CASE
     WHEN Boolean_expression THEN result_expression [ ...n ] 
     [ ELSE else_result_expression ] 
END

L'expression doit être modifiée comme suit :

SUM(CASE WHEN ValueDate > @startMonthDate THEN cash ELSE 0 END)

Cette expression évalue le champ ValueDate pour chaque enregistrement. Si ValueDate est supérieur à la date du mois de début spécifiée, la valeur de rachat est renvoyée ; sinon, 0 est renvoyé. Les valeurs résultantes sont ensuite additionnées pour fournir le total des liquidités pour la période spécifiée.

Approche alternative

Pour de meilleures performances, envisagez d'utiliser une instruction JOIN et GROUP BY au lieu de une sous-requête dépendante :

SELECT SUM(cash)
FROM Table_a AS a
JOIN Table_b AS b ON a.branch = b.branch AND a.transID = b.transID
WHERE ValueDate > @startMonthDate
GROUP BY a.transID

Cette approche évite la surcharge associée à une sous-requête et peut entraîner un temps d'exécution plus rapide.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn