Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORA-00937:Không phải là một hàm nhóm đơn - Lỗi truy vấn

Bạn có thể đã sửa nó bằng max nhưng đó không phải là tại sao nó đang diễn ra và hơi khó hiểu. Vấn đề của bạn là truy vấn phụ của bạn, được chuyển thành một cột duy nhất không phải là một truy vấn tổng hợp, min , max , sum vv và do đó cần được đưa vào nhóm theo mệnh đề. Bạn đã sửa lỗi này bằng cách gói nó trong max vì giá trị tối đa của một giá trị sẽ luôn không đổi.

Tuy nhiên, vì bản thân truy vấn phụ của bạn là một truy vấn phân tích và sẽ chỉ trả về một hàng, điều hiển nhiên phải làm là sử dụng phép nối ca-ta để thêm nó vào truy vấn của bạn. Trong cú pháp kết hợp rõ ràng, điều này được gọi là kết hợp chéo .

select count(*) todas
     , sum(case when i.prioridade = 1 then 1 else 0 end) urgente
     , sum(case when i.prioridade = 2 then 1 else 0 end) alta
     , sum(case when i.prioridade = 3 then 1 else 0 end) normal
     , sum(case when i.prioridade = 4 then 1 else 0 end) baixa
     , naoAvaliados
     , sum(case when i.situacao = 'P' then 1 else 0 end) pendentes
     , sum(case when i.situacao = 'A' or i.situacao = 'I' then 1 else 0 end) iniciados
  from GMITEMOS i 
 cross join (select count(*) as naoAvaliados
               from GMITEMOS j
              inner join GMCTLSLA k
                 on k.os = j.cd_numero_os 
                and k.item = j.item
              where j.situacao in ('A', 'I', 'P')
                and k.ordem = 99999
                    )
 where i.situacao in ('A', 'I', 'P')
   and exists (select 1 
                 from GMCTLSLA c 
                where c.os = i.cd_numero_os 
                  and c.item = i.item
                      )

Phép nối cacte có một danh tiếng xấu vì nó nhân số hàng ở một bên của phép nối với số hàng ở bên kia. Tuy nhiên, nó có những công dụng, đặc biệt là trong trường hợp này.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhầm lẫn với dbms_xplan.display

  2. Bật SSL hoặc TLS trong Oracle Apps R12

  3. ngày / giờ Chuyển đổi giữa các múi giờ khác nhau

  4. Làm cách nào để ghi nhật ký các câu lệnh CẬP NHẬT bằng cách sử dụng ghi nhật ký của trình điều khiển Oracle một cách hợp lý?

  5. Trích xuất tổng số giây từ một kiểu dữ liệu khoảng thời gian