それで、私が持っている2つの質問があります。1つは、効率化のために本当に正しいアプローチを行っているかどうかです。2 つのテーブルのフィールドが一致するかどうかに応じて異なる名前を吐き出し、Type という名前の新しい列を作成しようとしています。ネストされた IF ステートメントです。クエリは 2 ~ 3 秒で簡単に終了しますが、重複が多いため、ItemName、次に Type で GROUP BY したいと考えています。それを行った後、クエリは終了せず、タイムアウトし、10 分間試行しても複雑すぎると主張します。また、DISTINCT と FIRST を使ってみましたが、うまくいきませんでした。壮大な計画では、このクエリを他のクエリと組み合わせて、タイプ別にグループ化された実行中の合計を作成したいと考えています。したがって、最終的なクエリを機能させるには、このクエリで GROUP BY を実行できることが重要です。以下はクエリです。
SELECT Inventory_All.ItemName,
IIF(Inventory_All.[ItemName]=Products.[QB Assembly Name], "Assembly Part",
IIF(Inventory_All.[ItemName]=Products.[QB Service Part Name],"Service Part",
IIF(Inventory_All.[ItemName]=Components.[QB Component Name],Components.Type,"Other") )) AS Type
FROM
(Inventory_All LEFT JOIN Products ON Inventory_All.ItemName=Products.[QB Assembly Name] OR Inventory_All.ItemName=Products.[QB Service Part Name]) LEFT JOIN Components ON Inventory_All.ItemName=Components.[QB Component Name];
同様の問題を抱えている他の人を読み、インデックスを作成しようとしましたが、役に立たなかったようです. GROUP BY 関数がほとんど処理する必要がないこのクエリを再作成する必要があるようです。ただし、この形式の SQL と GROUP BY がどのように動作するかはわかりません。GROUP BY (または同様の関数) が機能するようにクエリを単純化するためのヒントはありますか?
助けてくれてありがとう。