Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Всеки израз GROUP BY трябва да съдържа поне една колона, която не е външна препратка

Като начало не можете да направите това:

having rid!=MAX(rid)

Клаузата HAVING може да съдържа само неща, които са атрибути на агрегираните групи.

Освен това 1, 2, 3 не е валидно в GROUP BY в SQL Server - мисля, че е валидно само в ORDER BY.

Можете ли да обясните защо това не е това, което търсите:

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. Как да предадете параметър на mssql заявка в възел js

  2. Стойности, разделени със запетая със SQL заявка

  3. Как да генерирате диапазон от дати в SQL Server

  4. Ускорено възстановяване на база данни в SQL Server 2019

  5. Какво прави 'COLLATE SQL_Latin1_General_CP1_CI_AS'?