Sql 获取oracle错误而不是GROUP BY表达式
创建视图时,我得到了一个not a group by表达式。我得到的错误是这一行的“param.ports_per_olt8*SUM(card.in_svc_ind)AS total_port_cnt”,有帮助吗 我的情妇如下Sql 获取oracle错误而不是GROUP BY表达式,sql,oracle,group-by,Sql,Oracle,Group By,创建视图时,我得到了一个not a group by表达式。我得到的错误是这一行的“param.ports_per_olt8*SUM(card.in_svc_ind)AS total_port_cnt”,有帮助吗 我的情妇如下 WITH param AS (SELECT eid, 17-SUM(DECODE(NVL(EQUIPPED_TYPE, ASSIGNED_TYPE),'ETOS10',1,0)) AS gpon_slots_per_ta500X,
WITH param
AS (SELECT eid,
17-SUM(DECODE(NVL(EQUIPPED_TYPE, ASSIGNED_TYPE),'ETOS10',1,0)) AS gpon_slots_per_ta500X,
8 AS ports_per_olt8,
4 AS etos10_slots_per_ta5000,
10 AS ports_per_etos10,
8 as ports_per_TA1108VP
FROM ECIL_TA500X_CARD
GROUP BY EID)
( SELECT card.eid,
COUNT ( * ) AS installed_card_cnt,
SUM (card.in_svc_ind) AS insrv_card_cnt,
param.ports_per_olt8 * SUM (card.in_svc_ind)
AS total_port_cnt, --ERROR HERE--
(param.ports_per_olt8 * SUM (card.in_svc_ind))
- SUM (DECODE (card.in_svc_ind, 1, card.oos_port_cnt, 0))
AS insrv_port_cnt
FROM ecil_ta500x_card card, param
WHERE card.equipped_type like 'OLT8%'
AND card.eid = param.eid
GROUP BY card.eid) oltcard,
ECIL_TA500X_卡是一个表,在开始时在此视图中创建了参数,
param.ports_per_olt8
列不是任何聚合的一部分,这就是为什么会出现此错误。如果它对每一行都有一个不同的值,我认为它有-尝试在使用列的地方使用MIN(param.ports\u per\u olt8)
WITH param
AS (SELECT eid,
17-SUM(DECODE(NVL(EQUIPPED_TYPE, ASSIGNED_TYPE),'ETOS10',1,0)) AS gpon_slots_per_ta500X,
8 AS ports_per_olt8,
4 AS etos10_slots_per_ta5000,
10 AS ports_per_etos10,
8 as ports_per_TA1108VP
FROM ECIL_TA500X_CARD
GROUP BY EID)
( SELECT card.eid,
COUNT ( * ) AS installed_card_cnt,
SUM (card.in_svc_ind) AS insrv_card_cnt,
MIN(param.ports_per_olt8) * SUM (card.in_svc_ind)
AS total_port_cnt, --ERROR HERE--
(MIN(param.ports_per_olt8) * SUM (card.in_svc_ind))
- SUM (DECODE (card.in_svc_ind, 1, card.oos_port_cnt, 0))
AS insrv_port_cnt
FROM ecil_ta500x_card card, param
WHERE card.equipped_type like 'OLT8%'
AND card.eid = param.eid
GROUP BY card.eid) oltcard,
如果我添加SUM(参数ports_per_olt8)而不是MIN,它会给出相同的结果吗?我给它加了一个和,我没有得到任何错误。所以,我应该保持它的总和,还是把它改成总和,这是不一样的,你不会有错误,但你的结果会不同。我想我需要数据来测试它。