分组依据 - SQL Oracle 错误:无效项目

Posted

技术标签:

【中文标题】分组依据 - SQL Oracle 错误:无效项目【英文标题】:Group By - SQL Oracle Error: Invalid Item 【发布时间】:2021-10-15 04:30:26 【问题描述】:

尝试按 ITEM 进行分组,但我似乎无法正常工作,ORA-00904:“ITEM”:标识符无效。这是我迄今为止尝试过的:

SELECT sum(quantity) AS SUPPLY, TRIM((SELECT ITEM_ID FROM INVENTORY_ITEM WHERE INVENTORY_ITEM_KEY = INVENTORY_SUPPLY.INVENTORY_ITEM_KEY)) AS ITEM FROM INVENTORY_SUPPLY
WHERE SUPPLY_TYPE = 'ONHAND' AND SHIPNODE_KEY IN ('LDC', 'LDC-WEB', 'LDC-SOS') GROUP BY ITEM;

INVENTORY_SUPPLY 表中的每个 ITEM 可以有多个条目(由 INVENTORY_ITEM_KEY 匹配),我需要将这些数量汇总到一行中。

【问题讨论】:

请提供样本数据、期望的结果,并解释您想要做什么。非工作查询不会(必然)提供此信息。 INVENTORY_SUPPLY 表包含每个 INVENTORY_ITEM_KEY 的条目以及各种 SHIPNODE_KEYS 的现有数量。我在上面的查询中只过滤了我想要的 SHIPNODE_KEYS,但这会为每个 INVENTORY_KEY 留下 3 个条目,因为它们有不同的 SHIPNODE_KEYS。我正在使用 INVENTORY_KEY 从不同的表中获取相应的项目,因为这对阅读更友好。但是由于无法按项目求和数量,我在表中看到每个项目的 3 个条目,我需要将这些总和为 1 个条目。有帮助吗 我相信@GordonLinoff 试图让你这样做:***.com/help/minimal-reproducible-example 【参考方案1】:

根据我的理解,可能您将不得不内连接 2 个表而不是标量子查询,因为 group by 在 select 子句之前首先执行。因此它无法识别 ITEM。

select sum(quantity) AS SUPPLY,  
ITEM_ID as ITEM
FROM INVENTORY_SUPPLY join INVENTORY_ITEM
on INVENTORY_ITEM.INVENTORY_ITEM_KEY = INVENTORY_SUPPLY.INVENTORY_ITEM_KEY
WHERE SUPPLY_TYPE = 'ONHAND' 
AND SHIPNODE_KEY IN ('LDC', 'LDC-WEB', 'LDC-SOS') 
GROUP BY INVENTORY_ITEM.ITEM_ID;

【讨论】:

效果很好,很抱歉没能很好地解释我的问题,但你提供了一些对我有用的东西! 那你为什么不接受这个答案呢,@AWooster?

以上是关于分组依据 - SQL Oracle 错误:无效项目的主要内容,如果未能解决你的问题,请参考以下文章

SQL 语法问题 - 分组依据 - Oracle

即使字段包含在分组依据列表中,分组依据或聚合错误

oracle12c,sql,分组依据

Oracle SQL 行到具有分组依据和总和的列

加入和分组依据 - 选择列表中的列无效

分组依据的 SQL QUERY 错误