где оператор не допускается с группой по функции - PullRequest
1 голос
/ 28 марта 2020

Я все еще новичок ie с oracle, здесь у меня есть запрос, который возвращает данные вроде:

0.52
0.01
1
12

Желаемый результат:

1
12

у меня есть попытался сделать что-то подобное в where части, но он возвращает group function is not allowed here:

to_char((Max(start_time_timestamp+ (2/24))- p.port_statusmoddat), 999.999) >1

запрос, с которым я работаю:

select to_char((Max(start_time_timestamp+ (2/24))- p.port_statusmoddat), 999.999) as Diff   
from  ZAJBIREJ.UDR_ST r,directory_number d, CONTR_SERVICES_CAP C, MPUSNTAB SN, unicam.vw_contr_imsi_sim x, port p
where reject_reason_code = 'ISUBS'
  and r.s_p_port_address = p.port_num (+) 
  and c.co_id = x.co_id (+)
  and s_p_number_address = d.dn_num (+)
  and d.dn_id =c.dn_id 
  AND C.SNCODE = sn.SNCODE
  and C.MAIN_DIRNUM = 'X' 
  and c.cs_deactiv_date is null
  and p.port_status = 'd'
  AND nvl(C.cs_deactiv_date,'01-jan-2300') = (SELECT MAX(nvl(CA.cs_deactiv_date,'01-jan-2300'))
                           FROM CONTR_SERVICES_CAP CA, MPUSNTAB SNT
                           WHERE  CA.DN_ID = D.DN_ID
                           AND SNT.SHDES = SN.SHDES)
group by reject_reason_code ,c.co_id, s_p_number_address,r.s_p_port_address,x.IMSI,p.port_status, p.port_statusmoddat   

1 Ответ

2 голосов
/ 28 марта 2020

Вам необходимо использовать предложение HAVING:

group by reject_reason_code ,c.co_id, s_p_number_address, r.s_p_port_address,
         x.IMSI, p.port_status, p.port_statusmoddat
having Max(start_time_timestamp+ (2/24))- p.port_statusmoddat >1

Я также удалил избыточный TO_CHAR, поскольку вы хотите проверить, что число превышает 1, а не то, что строка символов превышает 1 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...