Sql 获取oracle错误而不是GROUP BY表达式

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,

创建视图时,我得到了一个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,
               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,它会给出相同的结果吗?我给它加了一个和,我没有得到任何错误。所以,我应该保持它的总和,还是把它改成总和,这是不一样的,你不会有错误,但你的结果会不同。我想我需要数据来测试它。