2016-11-06 144 views
2

我有以下SQL交叉表查询(Microsoft Access中)交叉表查询按年份和月份

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; 

的方式排序的数据不正是我所期待的(见screenshort)

enter image description here

我们可以看到,我们有2013年1月,其次是2014年1月,其次是2015年1月,等...

我想什么已经是亚努ary 2013,2013年2月,...,2013年12月,2014年1月等...

我在交叉表查询中做错了什么?

任何帮助,将不胜感激。提前致谢。

回答

2

尝试以通过格式([dValeur], “mm.yyyy”)

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

它的工作,非常感谢。 – Laurent