Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Każde wyrażenie GROUP BY musi zawierać co najmniej jedną kolumnę, która nie jest odnośnikiem zewnętrznym

Na początek nie możesz tego zrobić:

having rid!=MAX(rid)

Klauzula HAVING może zawierać tylko elementy, które są atrybutami grup zagregowanych.

Ponadto 1, 2, 3 nie jest ważny w GROUP BY w SQL Server - myślę, że jest to ważne tylko w ORDER BY.

Czy możesz wyjaśnić, dlaczego nie tego szukasz:

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. Utwórz bazę danych w SQL Server (T-SQL)

  2. Wewnętrzne elementy SQL Server:Plan Caching Pt. II – Ponowna kompilacja planów

  3. Partycjonowana tabela sprawdzania serwera SQL

  4. Szyfrowanie kopii zapasowej bazy danych programu SQL Server

  5. Różnica między sys.objects, sys.system_objects i sys.all_objects w programie SQL Server