sql >> Databáze >  >> RDS >> Sqlserver

Každý výraz GROUP BY musí obsahovat alespoň jeden sloupec, který není vnějším odkazem

Pro začátek nemůžete udělat toto:

having rid!=MAX(rid)

Klauzule HAVING může obsahovat pouze věci, které jsou atributy agregovaných skupin.

Kromě toho 1, 2, 3 není platný v GROUP BY v SQL Server - myslím, že je platný pouze v ORDER BY.

Můžete vysvětlit, proč to není to, co hledáte:

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. Chyba serveru SQL 206:Kolize typu operandu

  2. Vraťte procento sady výsledků v SQL Server

  3. Jak získat zeměpisnou šířku a délku z sdo_geometry v oracle

  4. Mohu použít příkaz CASE ve stavu JOIN?