Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Setiap ekspresi GROUP BY harus berisi setidaknya satu kolom yang bukan referensi luar

Untuk memulai, Anda tidak dapat melakukan ini:

having rid!=MAX(rid)

Klausa HAVING hanya dapat berisi hal-hal yang merupakan atribut dari grup agregat.

Selain itu, 1, 2, 3 tidak valid di GROUP BY di SQL Server - saya pikir itu hanya valid di ORDER BY.

Bisakah Anda menjelaskan mengapa ini bukan yang Anda cari:

select 
LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound,
MAX(qvalues.rid)
 from batchinfo join qvalues on batchinfo.rowid=qvalues.rowid
where LEN(datapath)>4
group by LEFT(SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000), PATINDEX('%[^0-9]%', SUBSTRING(batchinfo.datapath, PATINDEX('%[0-9][0-9][0-9]%', batchinfo.datapath), 8000))-1),
qvalues.name,
qvalues.compound


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Membuat Database di SQL Server (T-SQL)

  2. Sisipkan SQL Server jika tidak ada praktik terbaik

  3. Contoh Pernyataan Gabung Sederhana di SQL Server

  4. Internal Replikasi Transaksional SQL Server – Bagian 2

  5. Mengapa join kiri t-sql saya tidak berfungsi?