逗人使用MySQL查询,在Microsoft Access
不用说了,我已经失去我的脑海里,使这工作完全正常在MySQL工作到Microsoft Access查询。我有一些例外。
这是一个比较查询,该比较查询确实可以比较当前月份和前一个月的耗电量,并按建筑物进行分组。
正如我所说的,它在MySQL中完全正常,但在MS Access中不起作用。
原始查询:
SELECT
tblElectricReadings.Building,
SUM(CASE WHEN tblElectricReadings.ReadingDate >= DATE_SUB(NOW(), INTERVAL 1 YEAR) THEN (tblElectricReadings.EndMeter - tblElectricReadings.StartMeter) ELSE NULL END) AS 'Cons1',
SUM(CASE WHEN tblElectricReadings.ReadingDate BETWEEN DATE_SUB(NOW(), INTERVAL 2 YEAR) AND DATE_SUB(NOW(), INTERVAL 1 YEAR) THEN (tblElectricReadings.EndMeter - tblElectricReadings.StartMeter) ELSE NULL END) AS 'Cons2',
CONCAT(MONTHNAME(tblElectricReadings.ReadingDate)) AS MonthRecorded
FROM tblElectricReadings
WHERE tblElectricReadings.ReadingDate >= DATE_SUB(NOW(), INTERVAL 2 YEAR)
GROUP BY tblElectricReadings.Building,
CONCAT(MONTHNAME(tblElectricReadings.ReadingDate))
ORDER BY tblElectricReadings.ReadingDate, tblElectricReadings.Building
我认识的MS Access SQL是有点不同的,所以我潜伏在互联网之后尝试了一些变化。 这是接近我能得到,但它仍然是行不通的:
SELECT
tblElectricReadings.[Building],
SUM(IIF(tblElectricReadings.[Reading Date] >= DATEADD("y",-1,NOW()), (tblElectricReadings.[End Meter] - tblElectricReadings.[Start Meter]),0)) AS 'Cons1',
SUM(IIF(tblElectricReadings.[Reading Date] BETWEEN DATEADD("y",-2,NOW()) AND DATEADD("y",-1,NOW()), (tblElectricReadings.[End Meter] - tblElectricReadings.[Start Meter]),0)) AS 'Cons2',
MONTHNAME(tblElectricReadings.[Reading Date]) AS MonthRecorded
FROM tblElectricReadings
WHERE tblElectricReadings.[Reading Date] >= DATEADD("y",-2,NOW())
GROUP BY tblElectricReadings.[Building], MONTHNAME(tblElectricReadings.[Reading Date])
ORDER BY tblElectricReadings.[Reading Date], tblElectricReadings.[Building]
通过上述,我现在得到以下错误:“您的查询不包括指定表达式“tblElectricReadings [。阅读日期]'作为聚合函数的一部分
有没有人有任何线索我做错了什么?当然任何帮助将不胜感激:)道歉,如果我问一些容易,但我仍然在学习很多这里:(
感谢您可以提供任何最终的帮助。
编辑3:我管理!这对我有用 - 感谢所有提供的帮助,我很感激。
SELECT
tblElectricReadings.[Building],
MONTHNAME(MONTH(tblElectricReadings.[Reading Date])) AS MonthRecorded,
SUM(IIF(tblElectricReadings.[Reading Date] >= DATEADD("yyyy",-1,NOW()), (tblElectricReadings.[End Meter] - tblElectricReadings.[Start Meter]),0)) AS [Current Year Consumption],
SUM(IIF(tblElectricReadings.[Reading Date] BETWEEN DATEADD("yyyy",-2,NOW()) AND DATEADD("yyyy",-1,NOW()), (tblElectricReadings.[End Meter] - tblElectricReadings.[Start Meter]),0)) AS [Previous Year Consumption]
FROM tblElectricReadings
WHERE tblElectricReadings.[Reading Date] >= DATEADD("yyyy",-2,NOW())
GROUP BY tblElectricReadings.[Building], MONTH(tblElectricReadings.[Reading Date])
ORDER BY MONTH(tblElectricReadings.[Reading Date]), tblElectricReadings.[Building];
什么是你提示输入? – Andre
对''“'进行求和似乎不是一个好主意,用'0'替代'IIf()'调用。 – Andre
你为什么不在Access中创建一个传递查询?然后你可以粘贴你的mySql语句,就完成了! –