我需要帮助从一个简单的实体使用sql Server拉取数据。
inventory实体具有列(pk,fk)product_id, (pk,fk)warehouse_id, inventory_amount, inventory_max_stock, inventory_reorder_point。
我需要库存记录作为产品ID列表和以下列的总和:库存金额,库存最大库存和库存再订购点。仅显示inventory_amount > 900所在位置的结果。
SELECT PRODUCT_ID, SUM(INVEN_AMOUNT), SUM(INVEN_MAX_STOCK),
SUM(INVEN_REORDER_POINT) FROM INVENTORY
GROUP BY PRODUCT_ID HAVING INVEN_AMOUNT > 900;这就是我尝试过的代码。但我一直收到错误,这不是一个group by表达式。有没有什么帮助可以解释为什么我会得到这个错误?
发布于 2012-11-20 03:38:32
不允许使用HAVING INVEN_AMOUNT > 900,因为您没有按INVEN_AMOUNT分组。改用WHERE:
SELECT PRODUCT_ID, SUM(INVEN_AMOUNT), SUM(INVEN_MAX_STOCK), SUM(INVEN_REORDER_POINT)
FROM INVENTORY
WHERE INVEN_AMOUNT > 900
GROUP BY PRODUCT_ID;如果您想限制那些sums > 900的组,那么可以使用SUM(INVEN_AMOUNT)
SELECT PRODUCT_ID, SUM(INVEN_AMOUNT), SUM(INVEN_MAX_STOCK), SUM(INVEN_REORDER_POINT)
FROM INVENTORY
GROUP BY PRODUCT_ID
HAVING SUM(INVEN_AMOUNT) > 900;发布于 2012-11-20 05:12:13
INVEN_AMOUNT不能与having一起使用,但SUM(INVEN_AMOUNT)有效。Having用于聚合函数,如sum()、avg()和max()等,否则最好使用where
SELECT PRODUCT_ID, SUM(INVEN_AMOUNT) as INVEN_AMOUNT,
SUM(INVEN_MAX_STOCK), SUM(INVEN_REORDER_POINT) FROM INVENTORY
GROUP BY PRODUCT_ID Having SUM(INVEN_AMOUNT) > 900;https://stackoverflow.com/questions/13460285
复制相似问题