7. Reports (Rapports comptables)
Les trois rapports comptables de base :
- Balance Sheet (Bilan)
→ Montre les actifs, passifs et capitaux propres à un moment donné.
Formule :
Assets=Liabilities+EquityAssets=Liabilities+Equity - Profit and Loss Statement (Compte de Résultat)
→ Résume les revenus, dépenses, profits ou pertes sur une période donnée. - Trial Balance (Balance de Vérification)
→ Liste tous les comptes avec leurs soldes débit et crédit pour vérifier que les écritures sont équilibrées.
Contexte des règles comptables :
Règles d’or de la comptabilité :
- Compte réel :
➤ Débiter ce qui entre, créditer ce qui sort. - Compte personnel :
➤ Débiter celui qui reçoit, créditer celui qui donne. - Compte nominal :
➤ Débiter toutes les dépenses et pertes, créditer tous les revenus et gains.
Effets des opérations sur les comptes :
Type de compte | Débit (↑) | Crédit (↓) |
---|---|---|
Actif | Augmentation | Diminution |
Passif | Diminution | Augmentation |
Capitaux propres | Diminution | Augmentation |
Revenu | Diminution | Augmentation |
Dépense | Augmentation | Diminution |

7.1 Bilan Comptable
Un bilan comptable présente une synthèse des actifs, capitaux propres et passifs d’une organisation ou d’un individu à un moment précis.
Formule fondamentale :
Actif = Passif + Capitaux propres
7.1.1 Requête Exemple
La requête ci-dessous concerne les actifs. Les requêtes pour les passifs et les capitaux propres sont similaires, mais la formule de calcul du solde est différente (voir la section 6 pour les règles : pour les passifs et capitaux propres, le solde = crédit – débit).
SELECT debits.glcode AS 'glcode', debits.name AS 'name',
(IFNULL(debits.debitamount, 0) - IFNULL(credits.creditamount, 0)) AS 'balance'
FROM
(SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'DEBIT'
AND acc_coa.category IN ('ASSET')
GROUP BY name
ORDER BY glcode) debits
LEFT OUTER JOIN
(SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'CREDIT'
AND acc_coa.category IN ('ASSET')
GROUP BY name) credits
ON debits.name = credits.name
UNION
SELECT credits.glcode AS 'glcode', credits.name AS 'name',
(IFNULL(debits.debitamount, 0) - IFNULL(credits.creditamount, 0)) AS 'balance'
FROM
(SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'DEBIT'
AND acc_coa.category IN ('ASSET')
GROUP BY name
ORDER BY glcode) debits
RIGHT OUTER JOIN
(SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'creditamount'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'CREDIT'
AND acc_coa.category IN ('ASSET')
GROUP BY name
ORDER BY glcode) credits
ON debits.name = credits.name;
7.2 Compte de Résultat (Income Statement)
Le Compte de Résultat est un état financier d’une entreprise qui montre comment les revenus (argent reçu de la vente de produits et services avant déduction des charges) sont transformés en résultat net (le bénéfice après déduction de toutes les charges et revenus).
Il affiche les revenus reconnus sur une période donnée, ainsi que les coûts et dépenses associés à ces revenus.
Formule :
Resultat Net=Revenus Totaux−Dépenses TotalesRésultat Net=Revenus Totaux−Deˊpenses Totales

7.2.1 Requête Exemple – Revenus
La requête ci-dessous concerne les revenus. La requête pour les dépenses serait similaire, sauf pour le calcul du solde (voir les règles dans la section 6).
SELECT *
FROM (
SELECT debits.glcode AS 'glcode', debits.name AS 'name',
(IFNULL(credits.creditamount, 0) - IFNULL(debits.debitamount, 0)) AS 'balance'
FROM (
SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'DEBIT'
AND acc_coa.category IN ('INCOME')
AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
GROUP BY name
ORDER BY glcode
) debits
LEFT OUTER JOIN (
SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'CREDIT'
AND acc_coa.category IN ('INCOME')
AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
GROUP BY name
) credits
ON debits.name = credits.name
UNION
SELECT credits.glcode AS 'glcode', credits.name AS 'name',
(IFNULL(credits.creditamount, 0) - IFNULL(debits.debitamount, 0)) AS 'balance'
FROM (
SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'DEBIT'
AND acc_coa.category IN ('INCOME')
AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
GROUP BY name
ORDER BY glcode
) debits
RIGHT OUTER JOIN (
SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'CREDIT'
AND acc_coa.category IN ('INCOME')
AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
GROUP BY name
ORDER BY glcode
) credits
ON debits.name = credits.name
) AS fullouterjoinresult
ORDER BY glcode;
7.3 Balance de Vérification (Trial Balance)
La balance de vérification est une liste de tous les comptes du grand livre général (qu’ils soient de nature capital ou revenu) d’une entreprise.
Cette liste contient :
- Le nom du compte du grand livre nominal.
- La valeur de ce compte.
Chaque compte aura soit :
- Une valeur de solde débiteur → affichée dans la colonne débit.
- Une valeur de solde créditeur → affichée dans la colonne crédit.

7.3.1 Requête Exemple – Balance de Vérification
Il s’agit de la requête complète pour générer le rapport de balance de vérification :
SELECT *
FROM (
SELECT debits.glcode AS 'glcode', debits.name AS 'name',
IF(debits.type = 'ASSET' OR debits.type = 'EXPENSES',
IFNULL(debits.debitamount, 0) - IFNULL(credits.creditamount, 0), '') AS 'debit',
IF(debits.type = 'INCOME' OR debits.type = 'EQUITY' OR debits.type = 'LIABILITIES',
IFNULL(credits.creditamount, 0) - IFNULL(debits.debitamount, 0), '') AS 'credit'
FROM (
SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount', acc_coa.type AS 'type'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'DEBIT'
AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
GROUP BY name
ORDER BY glcode
) debits
LEFT OUTER JOIN (
SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount', acc_coa.type AS 'type'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'CREDIT'
AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
GROUP BY name
ORDER BY glcode
) credits
ON debits.name = credits.name
UNION
SELECT credits.glcode AS 'glcode', credits.name AS 'name',
IF(credits.type = 'ASSET' OR credits.type = 'EXPENSES',
IFNULL(debits.debitamount, 0) - IFNULL(credits.creditamount, 0), '') AS 'debit',
IF(credits.type = 'INCOME' OR credits.type = 'EQUITY' OR credits.type = 'LIABILITIES',
IFNULL(credits.creditamount, 0) - IFNULL(debits.debitamount, 0), '') AS 'credit'
FROM (
SELECT acc_coa.gl_code AS 'glcode', name, SUM(amount) AS 'debitamount', acc_coa.type AS 'type'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'DEBIT'
AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
GROUP BY name
ORDER BY glcode
) debits
RIGHT OUTER JOIN (
SELECT acc_coa.gl_code, name, SUM(amount) AS 'creditamount', acc_coa.type AS 'type'
FROM acc_journal_entry, acc_coa
WHERE acc_coa.id = acc_journal_entry.coa_id
AND acc_journal_entry.type = 'CREDIT'
AND acc_journal_entry.entry_date BETWEEN '2012-11-01' AND '2012-11-31'
GROUP BY name
ORDER BY glcode
) credits
ON debits.name = credits.name
) AS fullouterjoinresult
ORDER BY glcode;
Cette requête permet de générer une balance de vérification complète, en distinguant les soldes débiteurs (pour les comptes d’actif et de dépenses) et les soldes créditeurs (pour les comptes de revenus, capitaux propres et passifs), selon les règles comptables.
Souhaites-tu que je t’aide à adapter cette requête à une autre période ou à un autre type de rapport ?