获取两个日期之间的月份名称 Ms-Access

问题描述

我有这个查询

SELECT TblSales.ProductCode,TblSales.ProductName,TblSales.QtySold,Right([Zdate],7) AS [Mn/Yr]
FROM TblSales
WHERE (((TblSales.zDate) Between [Forms]![FrmSales]![From] And [Forms]![FrmSales]![FinalTo]))
GROUP BY TblSales.ProductCode,7);

我需要这个结果像这些列(ProductCode-ProductName-Sum Of QtySold in First month from the given date - 第二个月 - 第三个月 - 等等)

示例:如果两个日期是#1-1-2018# 到#31-3-2018# - 这些日期可以因 [Forms]![FrmSales]![From] 和 [Forms]![ 而更改FrmSales]![FinalTo]-

列: ProductCode -ProductName -Jan-2018 -Feb-2018- march-2018 行: A1-Computer-2000-2500-3000

PrevIoUs Qty 是两个日期之间每个月的 SumOfQtySold,提前致谢。

编辑#1: 我无法进行交叉表查询,此消息弹出Crosstab Error

解决方法

您可以使用交叉表查询将行数据转换为列。像这样:

PARAMETERS StartDate DateTime,EndDate DateTime;
TRANSFORM NZ(Sum(tblSales.QtySold),0) AS SumOfQtySold
SELECT tblSales.ProductCode,tblSales.ProductName
FROM tblSales
WHERE (((tblSales.zDate) Between [StartDate] And [EndDate]))
GROUP BY tblSales.ProductCode,tblSales.ProductName
PIVOT Format([tblSales].zDate,"mmm-yyyy");