所以,我有两个问题。一,是我是否真的在为提高效率而采取正确的方法?我正在尝试创建一个名为 Type 的新列,根据两个表的字段是否匹配,吐出不同的名称。这是一个嵌套的 IF 语句。查询很容易在 2-3 秒内完成,但我希望先按 ItemName 和 Type 进行分组,因为有很多重复项。这样做之后,查询没有完成,超时,并且在尝试 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(或类似功能)工作的任何提示?
谢谢您的帮助。