交叉表查询按年和月排序

时间:2016-11-06 13:06:04

标签: sql ms-access crosstab

我有以下SQL Crosstab查询(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月等......

我想拥有的是2013年1月,2013年2月,...,2013年12月,2014年1月等...

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

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

1 个答案:

答案 0 :(得分:2)

按格式尝试订购([dValeur],&#34; mm.yyyy&#34;)

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;