我收到此语法错误
查询表达式“Purchases.SUOM_Orders IN (SELECT COUNT(Purchases.SUOM_Orders) FROM Purchases WHERE Purchases.Order_Date>=DATE()-120) subQryCount”中可能还有其他编译器尚未处理的错误,但如果您发现任何错误,请更正。我感谢您的帮助。忽略“您的文字”部分。我试图将我的代码发布在论坛上,这就是这些部分的原因。(缺少运算符)
SELECT
Inventory.Item_No, Inventory.NDC, Pharmacy.NDC_Desc,
ROUND(Inventory.OH_Qty_EA / Pharmacy.McK_PackQty, 0) AS ‘McKesson_OH_Qty’,
SUM(Purchases.SUOM_Orders / subQryCount.SUOM_Orders) * Pharmacy.Safecor_PackQty * 1.5 / Pharmacy.McK_PackQty AS 'Avg_Par',
SUM(Purchases.SUOM_Orders / subQryCount.SUOM_Orders) * Pharmacy.Safecor_PackQty * 1.5 - SUM(Inventory.OH_Qty_EA) / Pharmacy.McK_PackQty AS 'Avg_OrdQty'
FROM
(Inventory
LEFT JOIN
Pharmacy ON Inventory.Item_No = Pharmacy.Item_No)
LEFT JOIN
Purchases ON Pharmacy.Item_No = Purchases.Item_No
WHERE
Purchases.SUOM_Orders IN (SELECT COUNT(Purchases.SUOM_Orders)
FROM Purchases
WHERE Purchases.Order_Date >= DATE() - 120) subQryCount
GROUP BY
Purchases.Item_No ASC
HAVING
Avg_OrdQty > 0;
subQryCount
条款中不能包含
WHERE
。查询要返回的字段名称需要与
SELECT
查询一起出现。因此要修复该错误,您需要删除
subQryCount
。这是您更新的 SQL:
SELECT
Inventory.Item_No, Inventory.NDC, Pharmacy.NDC_Desc,
ROUND(Inventory.OH_Qty_EA / Pharmacy.McK_PackQty, 0) AS ‘McKesson_OH_Qty’,
SUM(Purchases.SUOM_Orders / subQryCount.SUOM_Orders) * Pharmacy.Safecor_PackQty * 1.5 / Pharmacy.McK_PackQty AS 'Avg_Par',
SUM(Purchases.SUOM_Orders / subQryCount.SUOM_Orders) * Pharmacy.Safecor_PackQty * 1.5 - SUM(Inventory.OH_Qty_EA) / Pharmacy.McK_PackQty AS 'Avg_OrdQty'
FROM
Inventory
LEFT JOIN
Pharmacy ON Inventory.Item_No = Pharmacy.Item_No
LEFT JOIN
Purchases ON Pharmacy.Item_No = Purchases.Item_No
WHERE
Purchases.SUOM_Orders IN (SELECT COUNT(Purchases.SUOM_Orders)
FROM Purchases
WHERE Purchases.Order_Date >= DATE() - 120)
GROUP BY
Purchases.Item_No ASC
HAVING
Avg_OrdQty > 0;