【发布时间】:2016-12-22 07:16:25
【问题描述】:
Access 数据库包含 machinepark 的 logData。出于管理目的,我需要一些使用 Excel 生成的图形。数据是使用 VBA 查询从 Access 获取的。到现在为止还挺好。 除了 dateStamp 之外,还存储了一个周数(因为 Access/Excel 存在 ISO 周数问题)。但是,如果我提取 2016 年 1 月的数据,它不仅包含第 1-4 周,还包含 2016 年的第 53 周。我想将其排序为 53、1、2、3、4。 最后一步失败并出现错误:
"您的查询不包含指定的表达式 Format$(logData.dateStamp,'yyyy/mm') 作为 聚合函数。”
使用下面的 SQL 查询:
TRANSFORM sum((logData.hoursDay+logData.hoursNight)*60)
SELECT reasons.reason FROM reasons
INNER JOIN (logData INNER JOIN testRigs ON logData.machine = machines.ID) ON reasons.ID = logData.reason
WHERE Format$(logData.dateStamp,'mm') = 1
AND machines.type = "A"
GROUP BY reasons.reason
ORDER BY Format$(logData.dateStamp,'yyyy/mm') DESC
PIVOT logData.week;
AVG() 和 COUNT() 等聚合函数可以但在 SELECT 语句中,但我不需要此列。
任何提示如何正确排序周?
【问题讨论】:
-
如果您不能在 Group By 部分中使用该表达式,则必须删除它和 Order By 部分和 枢轴不是周,而是年和周。请参阅下面的功能。
标签: excel ms-access sql-order-by vba