2016-11-06 4 views
2

je la requête suivante SQL Crosstab (Microsoft Access)type de requête Crosstab par année et le mois

TRANSFORM Sum(tbEcritureDetail.iMontantCHF) AS SumOfiMontantCHF 
SELECT Format([dValeur],"mm\.yyyy") AS Mois, Sum(tbEcritureDetail.iMontantCHF) AS Ecart 
FROM tbTypeCategories INNER JOIN ((tbCategories INNER JOIN (tbSousCategorie INNER JOIN (tbEcritureHeader INNER JOIN tbEcritureDetail ON tbEcritureHeader.KeyPK = tbEcritureDetail.iDocPrincipalRef) ON tbSousCategorie.KeyPK = tbEcritureDetail.iSousCategorie) ON tbCategories.KeyPK = tbSousCategorie.iRefCategorie) INNER JOIN tbComptes ON tbEcritureHeader.iCompteRef = tbComptes.KeyPK) ON tbTypeCategories.KeyPK = tbSousCategorie.iTypeCategorie 
WHERE (((tbEcritureHeader.dValeur) Between #1/1/2013# And #12/31/2016#) AND ((tbComptes.sTypeCompte)<>"TITRES")) 
GROUP BY Format([dValeur],"mm\.yyyy") 
ORDER BY tbTypeCategories.sDescription 
PIVOT tbTypeCategories.sDescription; 

La façon dont les données sont triées ne sont pas exactement ce que j'attendais (voir screenshort)

enter image description here

nous pouvons remarquer que nous avons Janvier 2013, suivi Janvier 2014, suivi de Janvier 2015, etc ...

ce que je voudrais avoir est Janu ary 2013, février 2013, ..., décembre 2013, janvier 2014, etc ...

Qu'est-ce que je fais de mal dans la requête de tableau croisé?

Toute aide serait appréciée. Merci d'avance.

Répondre

2

commande Try par format ([dValeur], "mm.aaaa")

TRANSFORM Sum(tbEcritureDetail.iMontantCHF) AS SumOfiMontantCHF 
SELECT Format([dValeur],"mm\.yyyy") AS Mois, Sum(tbEcritureDetail.iMontantCHF) AS Ecart 
FROM tbTypeCategories INNER JOIN ((tbCategories INNER JOIN (tbSousCategorie INNER JOIN (tbEcritureHeader INNER JOIN tbEcritureDetail ON tbEcritureHeader.KeyPK = tbEcritureDetail.iDocPrincipalRef) ON tbSousCategorie.KeyPK = tbEcritureDetail.iSousCategorie) ON tbCategories.KeyPK = tbSousCategorie.iRefCategorie) INNER JOIN tbComptes ON tbEcritureHeader.iCompteRef = tbComptes.KeyPK) ON tbTypeCategories.KeyPK = tbSousCategorie.iTypeCategorie 
WHERE (((tbEcritureHeader.dValeur) Between #1/1/2013# And #12/31/2016#) AND ((tbComptes.sTypeCompte)<>"TITRES")) 
GROUP BY Format([dValeur],"mm\.yyyy") 
ORDER BY Format([dValeur],"mm\.yyyy") 
PIVOT tbTypeCategories.sDescription; 
+0

Il a travaillé, merci beaucoup. – Laurent