Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Искам да получа цялата колона на таблицата с акаунти с тази заявка, но дава грешка

Вашата заявка има група по клауза. Ако използвате клауза group by в заявката, тогава всяка колона в оператора select трябва да направи едно от двете неща - или трябва да бъде част от списъка group by, или трябва да бъде агрегат от някакъв вид (Sum , брой, ср., макс. и т.н.). Ако не направите това, SQL не знае какво да прави с колоната. Във вашия случай Accounts.regno и Accounts.model са изброени в select, но не са в клаузата group by и не са агрегати - оттук и вашата грешка.

Да приемем, че за момента имате два записа на акаунт с едно и също име на акаунт и slacc, но различно Regno (или модел). Клаузата group by казва, че те трябва да бъдат обединени в един запис за показване, но не сте казали на SQL как да направи това. Няма значение дали данните не са такива, SQL първо търси възможни грешки.

В този случай вероятно просто искате всички детайли да бъдат групирани. Най-простият начин е просто да се уверите, че сте добавили всички колони, необходими към групата, по този начин

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

Това ще поправи грешката, но прави допълнително групиране, от което не се нуждаете, и би станало много тромаво, ако имате много повече колони, които искате от акаунта, тъй като ще трябва да ги добавите всички. Друг начин да се справите с това е да използвате минималното количество колони за груповата заявка, след което да присъедините резултата от това към основната си заявка, за да получите другите колони. Това вероятно ще изглежда по следния начин

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да посочите местоположението на файловете с данни и регистрационните файлове при създаване на база данни в SQL Server

  2. Месеци между две дати

  3. Връщане на привилегии на колона от свързан сървър в SQL Server (T-SQL примери)

  4. База данни + удостоверяване на Windows + потребителско име/парола?

  5. Регистрационният файл на SQL Server 2008 няма да бъде съкратен