此问题已在此处有答案:
Group by alias (Oracle)(6个回答)
上个月关门了。
我已经创建了一个stored-procedure
,我想根据一些状态和日期执行和显示数据。在这个查询中,我使用了GROUP BY
函数。但它给了我错误,
ORA-00904:“TFC”.“OFFFERED_DATE”:无效标识符
查询
SELECT DISTINCT TO_CHAR(TFC.SPANID) , TO_CHAR(TFC.MZ_CODE) AS MAINT_ZONE_CODE, TO_CHAR(TFC.MZ_NAME) AS MAINT_ZONE_NAME,
SUM(TFC.MHO_HANDOVER_CERT) AS NE_LENGTH,
TFC.CREATED_DATE AS OFFERED_DATE
FROM APP_LCO.tbl_fip_checklist TFC
WHERE LENGTH(trim(TFC.SPANID)) > 8
AND LENGTH(trim(TFC.SPANID)) < 21
AND tfc.status = 'APPROVED'
MINUS
SELECT TO_CHAR(BB.LINK_ID) AS SPAN_ID,
TO_CHAR(BB.MAINTENANCEZONECODE) AS MAINT_ZONE_CODE,
TO_CHAR(BB.MAINTENANCEZONENAME) AS MAINT_ZONE_NAME,
MAINT_ZONE_NE_SPAN_LENGTH AS NE_LENGTH,
BB.CREATED_DATE
FROM TBL_FIBER_INV_JOBS BB
WHERE SPAN_TYPE = 'INTRACITY'
group by TFC.SPANID,TFC.MZ_CODE, TFC.MZ_NAME, TFC.MHO_HANDOVER_CERT, TFC.OFFERED_DATE;
1条答案
按热度按时间gdrx4gfi1#
这是因为你不能按别名分组-你必须使用列名,那就是
tfc.created_date
。你放错了
GROUP BY
条款;它不能在第二个查询的末尾(因为你使用了两个SELECT
的MINUS
集合运算符),而是包含聚合的那个-这是第一个查询:除此之外,
distinct
在包含group by
子句的查询中没有用处。所以:
**[编辑]**如何使用该查询作为另一个
SELECT
语句的源(CTE):**[编辑#2]**您评论说您仍然会得到重复的行;你不该这么做这里有一个简单的例子,它表明没有重复: