Je suis sûr que c'est un problème assez trivial, mais je ne suis pas sûr de ce que google pour trouver la solution.Utilisation des résultats des requêtes parentes dans la sélection imbriquée
J'ai une table qui ressemble à ceci:
CREATE TABLE IF NOT EXISTS `transactions` (
`name` text collate utf8_swedish_ci NOT NULL,
`value` decimal(65,2) NOT NULL,
`date` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=COMPACT;
Je POPULATE en coupant et coller des données de mon service bancaire Internet. La valeur peut être une valeur positive ou négative, ce qui à la fois la date et le nom contiennent devrait être assez évident;) je l'ai construit une requête pour me laisser voir ma ligne de fond pour chaque mois:
SELECT sum(`value`) as 'change', DATE_FORMAT(`date`, '%M %Y') as 'month'
FROM `transactions`
WHERE 1
GROUP BY year(`date`), month(`date`)
Maintenant, je voudrais ajouter le total des sommes accumulées dans le compte à la fin du mois en tant que colonne supplémentaire.
SELECT sum(`value`) as 'change', DATE_FORMAT(`date`, '%M %Y') as 'month',
(SELECT sum(`value`) FROM `transactions` WHERE `date` <= 123) as 'accumulated'
FROM `transactions`
WHERE 1
GROUP BY year(`date`), month(`date`)
123 est pas exactement ce que je veux là-dedans, mais je ne comprends pas comment obtenir le résultat de mon DATE_FORMAT intérieur de cette sous-requête.
Est-ce la bonne façon d'aborder le problème? Ceci est principalement un exercice personnel (exécuté sur un très petit jeu de données) donc je ne suis pas très préoccupé par les performances, le SQL lisible est beaucoup plus important.
Je suis une table en cours d'exécution InnoDB MySQL 5.0.45
I * think * Je comprends ce qui se passe ici, mais quel est ce premier champ "change"? – grapefrukt
C'est votre SUM à partir de la sous-requête interne. Désolé, je n'ai pas remarqué que c'est une table, voir la mise à jour – Quassnoi