我无法按所有值相同但有两行的表分组。我不明白这背后的原因是什么。
运行完这个查询后,我得到了下面的表,我想把表按批号分组。
SELECT
c.LOT_NO LOT_NO
, (4-(DECODE(c.qty1,0,1,0) + DECODE(c.qty2,0,1,0) + DECODE(c.qty3,0,1,0) + DECODE(c.qty4,0,1,0))) NON_ZERO_QTY
, count(c.lot_no) over () as LOT_COUNT
FROM
CIM.QLDT_6001 a
, CIM.PART_LOT_TBL b
, CIM.JR_QTY_DETAIL_TBL c
WHERE
c.lot_no = 'F-AJR-111026-603'
AND
a.val01 >= 100
AND
b.lot_no = c.lot_no
AND
a.lot_no like '%' || b.old_lot_no || '%'
表格:
LOT_NO NON_ZERO_QTY LOT_COUNT
F-AJR-111026-603 3 2
F-AJR-111026-603 3 2
现在当我试着用抽签来分组时,我得到了下面的错误。
ORA-00918: column ambiguously defined
00918. 00000 - "column ambiguously defined"
* Cause:
* Action:
Error at Line: 19 Column: 10
我还尝试从select语句中获取所有列,但出现了以下错误
ORA-00904: "LOT_COUNT": invalid identifier
00904. 00000 - "%s: invalid identifier"
* Cause:
* Action:
Error at Line: 19 Column: 34
我完全搞不清楚发生了什么事。有人能帮忙吗。
3条答案
按热度按时间rqcrx0a61#
您的查询中存在多个问题。
group by c.lot_no
是必需的中的第二个表达式
SELECT
一定要包在里面SUM
聚合函数(更改的表达式CASE
报表(按要求)始终使用标准ansi连接((推荐)
检查以下解决方案:
izkcnapc2#
据我所知,你不能
Group By
在LOT_No
或者LOT_COUNT
并获取标识符错误。这可能是因为没有对列使用正确的引用。相反,请尝试将查询的特定表引用用作:另请参阅:https://www.techonthenet.com/oracle/errors/ora00904.php 而且,http://www.dba-oracle.com/t_ora_00918_column_ambiguously_defined.htm
更新:
确保您正在对select语句中选定的列进行分组。
出错后:
请注意中使用的max函数
NON_ZERO_QTY
声明。您可以根据您的要求使用任何其他此类功能。它可以是sum()、min()、avg()等。jogvjijk3#
你的错误
表示在查询的多个表中找到要按其分组的列。您需要做的是在它前面加上正确表的别名。
但这会给你另一个错误
因为select子句中的第二行没有group函数。乍一看,您正在查找sum()。但这取决于你们的用例。
例子: