誰かがこれを正しくするのを手伝ってくれることを願っています。私は現在、このSQLコマンドを実行してExcelシートにデータを取得していますが、それは私を狂わせています。
結合する必要がある 3 つのテーブルがあります
- sup = 消耗品の時間別データ
- 監査 = 物が到着したときのログ (SUP & メーター)
- メートル = メートルの毎日のデータ
これは、物事が制御不能になり始める前に、私が本質的にたどり着いた場所です. sup と aud を結合させたり、meters と aud を結合させたりできます。問題のサプライのトップメーターを選択することはできませんが。
SELECT sup.*, aud.*, meters.*
FROM SuppliesData AS sup
INNER JOIN Audit As aud
ON sup.AuditID = aud.AuditID
WHERE sup.DeviceID = '14365'
INNER JOIN (
SELECT TOP 1
From MeterAudit AS meters
INNER JOIN aud
ON aud.AuditID=meters.AuditID
WHERE meters.DeviceID='14365' AND sup.AuditDate > meters.AuditDate// << I am so confused now...
ORDER by aud.AuditDate ASC
)
ORDER by aud.AuditDate ASC
私の混乱を理解しようとしたことをお詫びします。
基本的に、sup にも meter にも AuditDate フィールドはありません。AuditDate フィールドを供給品に適用し、供給品ごとに最も近いメーターを取得する必要があります。現在私が得ているのは(おそらくわかるように)ネストです...私が得ているエラーについて私が見るのは、「FROMの周りの不適切な構文」だけです
どんな助けでも大歓迎です、
参考までに、次のコードは完全に正常に動作します
SELECT sup.*, aud.*
// - simply changing SuppliesData to MeterAudit changes everything perfectly.
FROM SuppliesData AS sup
INNER JOIN Audit As aud
ON sup.AuditID = aud.AuditID
WHERE DeviceID = '14365'
ORDER by aud.AuditDate ASC
jc