Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

saya ingin mendapatkan semua kolom tabel Akun dengan kueri ini tetapi memberikan kesalahan

Kueri Anda memiliki grup demi klausa. Jika Anda menggunakan klausa grup demi grup dalam kueri, maka setiap kolom dalam pernyataan pilih harus melakukan salah satu dari dua hal - baik itu harus menjadi bagian dari grup berdasarkan daftar, atau harus berupa agregat dari beberapa jenis (Jumlah , Hitung, Rata-Rata, Maks, dll). Jika Anda tidak melakukan ini, SQL tidak tahu apa yang harus dilakukan dengan kolom. Dalam kasus Anda, Accounts.regno dan Accounts.model terdaftar di pilih, tetapi mereka tidak berada dalam kelompok demi klausa dan mereka bukan agregat - karenanya kesalahan Anda.

Asumsikan untuk saat ini Anda memiliki dua catatan akun dengan nama akun dan slacc yang sama, tetapi Regno (atau model) yang berbeda. Kelompok demi klausa mengatakan mereka harus digabungkan menjadi satu catatan untuk ditampilkan, tetapi Anda belum memberi tahu SQL cara melakukannya. Tidak masalah jika datanya tidak seperti itu, SQL mencari kemungkinan kesalahan terlebih dahulu.

Dalam hal ini, Anda mungkin hanya ingin semua detail dikelompokkan. Cara paling sederhana adalah dengan memastikan Anda menambahkan semua kolom yang diperlukan ke grup, seperti ini

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

Ini akan memperbaiki kesalahan, tetapi melakukan pengelompokan tambahan yang tidak Anda perlukan, dan akan menjadi sangat rumit jika Anda memiliki lebih banyak kolom yang Anda inginkan dari akun, karena Anda harus menambahkan semuanya. Cara lain untuk menanganinya adalah dengan menggunakan jumlah kolom minimum untuk kueri grup, lalu gabungkan hasilnya ke kueri utama Anda untuk mendapatkan kolom lainnya. Ini mungkin akan terlihat seperti ini

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. Format SQL di SQL Server Management Studio

  2. Cara menyalin data tabel dari server jauh ke server lokal di SQL Server 2008

  3. Bagaimana saya bisa memberi tahu program saya ketika database telah diperbarui?

  4. Bagaimana cara MEMPERBARUI dari SELECT di SQL Server?

  5. SQL Server - Putar nilai TIME ke menit berikutnya