sql >> Databasteknik >  >> RDS >> Sqlserver

Varje GROUP BY-uttryck måste innehålla minst en kolumn som inte är en yttre referens

Till att börja med kan du inte göra detta:

having rid!=MAX(rid)

HAVING-satsen kan bara innehålla saker som är attribut för de aggregerade grupperna.

Dessutom 1, 2, 3 är inte giltigt i GROUP BY i SQL Server - jag tror att det bara är giltigt i ORDER BY.

Kan du förklara varför detta inte är vad du letar 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. Hur man tar bort en databas i cPanel

  2. Salesforce SOQL från Crystal Reports

  3. Hur man distribuerar MariaDB Server till en Docker Container

  4. Skriver ut värdet på en variabel i SQL Developer