Mise à jour # 1: requête me donne erreur de syntaxe sur gauche ligne de jointure (exécution de la requête au sein de la jointure gauche fonctionne indépendamment parfaitement bien)requête imbriquée et transaction
SELECT b1.company_id, ((sum(b1.credit)-sum(b1.debit)) as 'Balance'
FROM MyTable b1
JOIN CustomerInfoTable c on c.id = b1.company_id
#Filter for Clients of particular brand, package and active status
where c.brand_id = 2 and c.status = 2 and c.package_id = 3
LEFT JOIN
(
SELECT b2.company_id, sum(b2.debit) as 'Current_Usage'
FROM MyTable b2
WHERE year(b2.timestamp) = '2012' and month(b2.timestamp) = '06'
GROUP BY b2.company_id
)
b3 on b3.company_id = b1.company_id
group by b1.company_id;
Original Post:
Je garde une trace des débits et crédits dans la même table. Le tableau a le schéma suivant:
| company_id | timestamp | credit | debit |
| 10 | MAY-25 | 100 | 000 |
| 11 | MAY-25 | 000 | 054 |
| 10 | MAY-28 | 000 | 040 |
| 12 | JUN-01 | 100 | 000 |
| 10 | JUN-25 | 150 | 000 |
| 10 | JUN-25 | 000 | 025 |
Comme mon résultat, je veux voir:
| Grouped by: company_id | Balance* | Current_Usage (in June) |
| 10 | 185 | 25 |
| 12 | 100 | 0 |
| 11 | -54 | 0 |
Solde: Calculé par (somme (crédit) - somme (débits)) * - l'horodatage n'a pas d'importance
Current_Usage: Calculé par sum (débits) - mais seulement pour les débits en JUIN. Le problème: Si je filtre tout de suite l'horodatage JUN, il ne calcule pas le solde de tous les temps mais seulement le solde de toutes les transactions en juin.
Comment puis-je calculer l'utilisation actuelle par mois, mais le solde sur toutes les transactions dans le tableau. J'ai tout fonctionne, sauf qu'il filtre uniquement les résultats JUN dans le calcul de l'utilisation actuelle dans mon code:
SELECT b.company_id, ((sum(b.credit)-sum(b.debit))/1024/1024/1024/1024) as 'BW_remaining', sum(b.debit/1024/1024/1024/1024/28*30) as 'Usage_per_month'
FROM mytable b
#How to filter this only for the current_usage calculation?
WHERE month(a.timestamp) = 'JUN' and a.credit = 0
#Group by company in order to sum all entries for balance
group by b.company_id
order by b.balance desc;
Je reçois une erreur de syntaxe sur la jointure gauche. Si je lance juste la requête dans la jointure, ça passe bien: Je cours la requête suivante: ### mise à jour: Il est vraiment difficile de mettre en forme le code dans le commentaire ainsi j'ai mis à jour la question avec le code sous la mise à jour # 1 –