GROUP BY A.* SQL'de izin verilmiyor.
Bunu, grupladığınız bir alt sorguyu kullanarak atlayabilir ve ardından katılabilirsiniz:
SELECT A.*, COALESCE(B.cnt, 0) AS Count_B_Foo
FROM TABLE1 AS A
LEFT JOIN
( SELECT FKey, COUNT(foo) AS cnt
FROM TABLE2
GROUP BY FKey
) AS B
ON A.PKey = B.FKey ;
SQL-2003 standardında, SELECTlistede GROUP BYişlevsel olan bağımlı oldukları sürece listede bulunmayan sütunlara izin veren bir özellik vardır . Bu özellik SQL Server'da uygulanmış olsaydı, sorgunuz şu şekilde yazılmış olabilirdi:
SELECT A.*, COUNT(B.foo)
FROM TABLE1 A
LEFT JOIN TABLE2 B ON A.PKey = B.FKey
GROUP BY A.pk --- the Primary Key of table A
Ne yazık ki, bu özellik henüz SQL Server 2012 sürümünde bile uygulanmadı - ve bildiğim kadarıyla herhangi bir başka DBMS'de uygulanmadı. Sahip olan ancak yetersiz olan MySQL dışında (yetersiz olduğu şekilde: yukarıdaki sorgu çalışacaktır ancak motor işlevsel bağımlılık için herhangi bir kontrol yapmaz ve diğer yazılı olmayan sorgular yanlış, yarı rasgele sonuçlar gösterecektir).
@ Mark Byers'in bir yorumda bizi bilgilendirdiği gibi , PostgreSQL 9.1 bu amaç için tasarlanmış yeni bir özellik ekledi . MySQL'in uygulanmasından daha kısıtlayıcıdır.
GROUP BYbendindeSELECTlistesinde, ama buna değer (böylece kolon veya ifade varsa gelecek ki hangi satırı olarak tanımlanmamış bırakır değil mi 't gruplama sentezleme üzerine işlevsel olarak bağlıdır, o zaman olabilir ) grup içindeki herhangi bir üst üste gelir.