1

SQL Server を使用して単純なエンティティからデータを取得する方法について助けが必要です。

在庫エンティティには列があります(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;

それが私が試したコードです。しかし、式によるグループではないというエラーが発生し続けます。そのエラーが発生する理由について何か助けはありますか?

4

2 に答える 2

0

HAVING INVEN_AMOUNT > 900 isn't allowed since you aren't grouping by INVEN_AMOUNT. Use WHERE instead:

SELECT PRODUCT_ID, SUM(INVEN_AMOUNT), SUM(INVEN_MAX_STOCK), SUM(INVEN_REORDER_POINT)
FROM INVENTORY
WHERE INVEN_AMOUNT > 900
GROUP BY PRODUCT_ID;

If you want to limit those groups with sums > 900, then use 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-19T19:38:32.230 に答える
0

INVEN_AMOUNTと一緒に使用することは無効ですhavingが、SUM(INVEN_AMOUNT)有効です。Havingsum()、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;

ここでチェックアウト

于 2012-11-19T21:12:12.830 に答える