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:
-
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
-
Menambahkan kolom ke
GROUP BY
daftarSELECT 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