sql >> Databasteknik >  >> RDS >> Sqlserver

Jag vill hämta hela kolumnen i tabellen Konton med den här frågan men det ger ett fel

Din fråga har en grupp för klausul. Om du använder en group by-sats i frågan, måste varje kolumn i select-satsen göra en av två saker - antingen måste den vara en del av gruppen för lista, eller så måste den vara ett aggregat av något slag (Summa , Count, Avg, Max, etc). Om du inte gör detta vet SQL inte vad den ska göra med kolumnen. I ditt fall är Accounts.regno och Accounts.model listade i urvalet, men de är inte i gruppen för klausul och de är inte aggregat - därav ditt fel.

Antag för tillfället att du har två kontoposter med samma kontonamn och slacc, men olika Regno (eller modell). Group by-klausulen säger att de måste sammanfogas till en post för visning, men du har inte berättat för SQL hur man gör det. Det spelar ingen roll om data inte är så, SQL letar efter möjliga fel först.

I det här fallet vill du förmodligen bara ha alla detaljer grupperade. Det enklaste sättet är bara att se till att du lägger till alla kolumner som behövs i gruppen genom att så här

select Accounts.name, Accounts.regno, Accounts.model, Accounts.slacc, count(servicing.dt) as total 
from Accounts 
   left outer join servicing on Accounts.slacc = servicing.slacc 
group by Accounts.slacc, Accounts.name, Accounts.regno, Accounts.model

Detta kommer att åtgärda felet, men gör extra gruppering som du inte behöver, och det skulle bli väldigt besvärligt om du hade många fler kolumner du ville ha från kontot, eftersom du skulle behöva lägga till alla. Ett annat sätt att hantera det är att använda det minsta antalet kolumner för gruppfrågan och sedan sammanfoga resultatet av det till din huvudfråga för att få de andra kolumnerna. Det här skulle förmodligen se ut ungefär så här

select Accounts.name, Accounts.regno, Accounts.model, Accounts.slacc, Totals.Total 
from Accounts
   left outer join 
     ( Select slacc, count(dt) as total
       from servicing
       group by slacc
     ) Totals on Totals.slacc = Accounts.slacc



  1. Hur man importerar röravgränsade textfildata till SQLServer-tabellen

  2. Hur man hittar poster med NULL i en kolumn

  3. Fråga för att hitta ett genomsnittligt viktat pris

  4. Minnes-/lagringsteknikhierarki och SQL Server