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

Kolom tidak valid dalam daftar pilih karena tidak terdapat dalam fungsi agregat atau klausa GROUP BY

Dengan kata lain, kesalahan ini memberi tahu Anda bahwa SQL Server tidak tahu yang mana B untuk memilih dari grup.

Anda ingin memilih satu nilai tertentu (mis. MIN , SUM , atau AVG ) dalam hal ini Anda akan menggunakan fungsi agregat yang sesuai, atau Anda ingin memilih setiap nilai sebagai baris baru (yaitu termasuk B di GROUP BY daftar bidang).

Perhatikan data berikut:

ID  A   B
1   1  13
1   1  79
1   2  13
1   2  13
1   2  42

Kueri

SELECT A, COUNT(B) AS T1 
FROM T2 
GROUP BY A

akan kembali:

A  T1
1  2
2  3

yang semuanya baik dan bagus.

Namun pertimbangkan kueri (ilegal) berikut, yang akan menghasilkan kesalahan ini:

SELECT A, COUNT(B) AS T1, B 
FROM T2 
GROUP BY A

Dan kumpulan data yang dikembalikan menggambarkan masalah:

A  T1  B
1  2   13? 79? Both 13 and 79 as separate rows? (13+79=92)? ...?
2  3   13? 42? ...?

Namun, dua kueri berikut memperjelas hal ini, dan tidak akan menyebabkan kesalahan:

  1. Menggunakan agregat

    SELECT A, COUNT(B) AS T1, SUM(B) AS B
    FROM T2
    GROUP BY A
    

    akan kembali:

    A  T1  B
    1  2   92
    2  3   68
    
  2. Menambahkan kolom ke GROUP BY daftar

    SELECT A, COUNT(B) AS T1, B
    FROM T2
    GROUP BY A, B
    

    akan kembali:

    A  T1  B
    1  1   13
    1  1   79
    2  2   13
    2  1   42
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PILIH UNTUK PEMBARUAN dengan SQL Server

  2. Cara Memperbaiki "Prosedur mengharapkan parameter '@ pernyataan' dari jenis 'ntext/nchar/nvarchar'." Kesalahan dalam SQL Server

  3. Di SQL Server, bagaimana cara menghasilkan pernyataan CREATE TABLE untuk tabel yang diberikan?

  4. Bagaimana cara membuat indeks unik pada kolom NULL?

  5. Cara Mengirim Email HTML dari SQL Server (T-SQL)