sql >> Database teknologi >  >> RDS >> Sqlserver

Hvert GROUP BY-udtryk skal indeholde mindst én kolonne, der ikke er en ydre reference

Til at starte med kan du ikke gøre dette:

having rid!=MAX(rid)

HAVING-sætningen kan kun indeholde ting, der er attributter for de aggregerede grupper.

Derudover 1, 2, 3 er ikke gyldig i GROUP BY i SQL Server - jeg tror det kun er gyldig i ORDER BY.

Kan du forklare, hvorfor det ikke er det, du leder efter:

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. Kan ikke trække offset-naive og offset-bevidste datotider

  2. Oracle Security Alert for CVE-2021-44228

  3. MySQL – Hvordan dropper man tabel, hvis den findes i databasen?

  4. Sådan importeres en PostgreSQL-database ved hjælp af phpPgAdmin