逗人使用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語句,就完成了! –