ディアーズ、言うこと使用
言うまでもなく、私は、MySQLで完全に正常に動作クエリは、Microsoft Accessに動作させるために私の心を失うされています。私はいくつかの例外があります。
これは、現在の1年前と同じ月の電気消費量を実際に建物ごとに比較した比較クエリです。
私が言ったように、それは完璧に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
'' ''での集計は良い考えのようには見えません。 'IIf()'の呼び出しを '0'で置き換えてください。 – Andre
Accessでパススルークエリを作成してみませんか? mySqlステートメントを貼り付けるだけで済みます。 –