首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体数据检索

实体数据检索
EN

Stack Overflow用户
提问于 2012-11-20 02:57:05
回答 2查看 48关注 0票数 1

我需要帮助从一个简单的实体使用sql Server拉取数据。

inventory实体具有列(pk,fk)product_id, (pk,fk)warehouse_id, inventory_amount, inventory_max_stock, inventory_reorder_point

我需要库存记录作为产品ID列表和以下列的总和:库存金额,库存最大库存和库存再订购点。仅显示inventory_amount > 900所在位置的结果。

代码语言:javascript
复制
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表达式。有没有什么帮助可以解释为什么我会得到这个错误?

EN

回答 2

Stack Overflow用户

发布于 2012-11-20 03:38:32

不允许使用HAVING INVEN_AMOUNT > 900,因为您没有按INVEN_AMOUNT分组。改用WHERE:

代码语言:javascript
复制
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)

代码语言:javascript
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2012-11-20 05:12:13

INVEN_AMOUNT不能与having一起使用,但SUM(INVEN_AMOUNT)有效。Having用于聚合函数,如sum()、avg()和max()等,否则最好使用where

代码语言:javascript
复制
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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13460285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档