2014-03-25 35 views
0

創建視圖時,我得到的不是一個按表達式組的錯誤,我得到的是這行「param.ports_per_olt8 * SUM(card.in_svc_ind)AS total_port_cnt,」任何幫助?獲取一個不是GROUP BY表達式的oracle錯誤

我PARAMS都是這樣下面

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_CARD是一個表,而params在此視圖中創建之初

回答

2

param.ports_per_olt8列是不是聚合的一部分,這就是爲什麼你得到這個錯誤。如果它對每一行都有不同的值,我認爲它有 - 使用MIN(param.ports_per_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, 
+0

如果我添加SUM(param.ports_per_olt8)而不是最小值它會給我相同的結果嗎?我添加了SUM,我沒有得到任何錯誤。所以我應該保持它SUM或將其更改爲MIN – Gio

+0

其實這不一樣,你不會得到一個錯誤,但你的結果會有所不同.. – SoulTrain

+0

我想我會需要數據來測試它。 – Gio

相關問題