Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

ORA-00904 Pengidentifikasi tidak valid” untuk pengidentifikasi dalam grup berdasarkan klausa

Anda tidak dapat merujuk ke alias kolom di tingkat SQL yang sama, kecuali dalam order by klausa.

Dari dokumentasi (penekanan ditambahkan):

Anda dapat menggunakan alias kolom, c_alias , untuk melabeli ekspresi yang mendahuluinya dalam daftar pilih sehingga kolom ditampilkan dengan judul baru. Alias ​​​​secara efektif mengganti nama item daftar pilih selama kueri. Alias ​​dapat digunakan di ORDER BY klausa, tetapi bukan klausa lain dalam kueri .

Saat Anda merujuk ke QTYLIV di GROUP BY karena daftar pilih belum dievaluasi dan alias tidak ada. Beginilah cara kueri diuraikan dan dijalankan.

Ketika Anda memiliki ekspresi yang rumit dalam daftar pilih, seringkali paling sederhana untuk membungkusnya dengan pilihan luar dan melakukan pengelompokan setelahnya:

SELECT *
FROM (
  SELECT p.name AS design,
    p.M_PRODUCT_CATEGORY_ID,
    il.PRICEACTUAL   AS price,
    bp.C_BPARTNER_ID AS idpartner,
    CASE
  ...
    (SELECT qtyinvoiced
    FROM C_InvoiceLine il
    WHERE bp.ISCUSTOMER ='Y'
    AND bp.C_BPARTNER_ID= 18888
    )               AS qtyliv,
  ...
    i.DATEINVOICED AS dat
  FROM C_InvoiceLine il
  INNER JOIN M_PRODUCT p
  ...
  ON (oi.c_location_id=loc2.c_location_id)
    --WHERE i.DateInvoiced BETWEEN $P{Date1} AND $P{Date2}
    --AND
    --i.DocStatus in ('CO','CL')
    --AND i.IsSoTrx = 'Y'
    --AND   p.isstocked='Y'
)
GROUP BY name ,
  M_PRODUCT_CATEGORY_ID,
  QTYINVOICED,
  PRICEACTUAL,
...
  qtyliv,
  qtydepot
ORDER BY name ,
  dateinvoiced ;

Perhatikan bahwa Anda tidak menggunakan alias tabel asli di GROUP BY atau ORDER BY klausa di pilihan luar, karena itu tidak lagi dalam cakupan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan koneksi localhost Java Oracle (ORA-12505)

  2. kegilaan versi driver oracle jdbc

  3. Solusi untuk tidak dapat melakukan operasi DML di dalam kueri?

  4. Pemetaan NHibernate untuk tipe data Oracle INTERVAL DAY TO SECOND

  5. Metode Pengumpulan:Fungsi BATAS Dalam Database Oracle