sql >> Database >  >> RDS >> Sqlserver

Elke GROUP BY-expressie moet ten minste één kolom bevatten die geen buitenste verwijzing is

Om te beginnen kun je dit niet doen:

having rid!=MAX(rid)

De HAVING-clausule kan alleen dingen bevatten die attributen zijn van de geaggregeerde groepen.

Bovendien, 1, 2, 3 is niet geldig in GROUP BY in SQL Server - ik denk dat dat alleen geldig is in ORDER BY.

Kun je uitleggen waarom dit niet is wat je zoekt:

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. Meerdere databases tegelijk opvragen

  2. Databasetaakverdeling:gedistribueerde versus gecentraliseerde instellingen

  3. MySQL omzeilen Kan tabelfout niet heropenen

  4. SQL Server 2016 - Introduction to Stretch Database