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!