sql >> Database >  >> RDS >> Sqlserver

Kolom ongeldig in de selectielijst omdat deze niet is opgenomen in een aggregatiefunctie of de GROUP BY-component

Met andere woorden, deze fout vertelt u dat SQL Server niet weet welke B om uit de groep te kiezen.

Of u wilt één specifieke waarde selecteren (bijv. de MIN , SUM , of AVG ) in dat geval zou u de juiste aggregatiefunctie gebruiken, of u wilt elke waarde als een nieuwe rij selecteren (d.w.z. inclusief B in de GROUP BY veldlijst).

Houd rekening met de volgende gegevens:

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

De vraag

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

zou terugkeren:

A  T1
1  2
2  3

dat is allemaal goed en wel.

Overweeg echter de volgende (illegale) zoekopdracht, die deze fout zou opleveren:

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

En de geretourneerde dataset die het probleem illustreert:

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

De volgende twee vragen maken dit echter duidelijk en zullen de fout niet veroorzaken:

  1. Een aggregaat gebruiken

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

    zou terugkeren:

    A  T1  B
    1  2   92
    2  3   68
    
  2. De kolom toevoegen aan de GROUP BY lijst

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

    zou terugkeren:

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


  1. ID voor automatisch verhogen toevoegen aan bestaande tabel?

  2. Neo4j - Maak een knooppunt met behulp van Cypher

  3. Een variabele doorgeven aan een trigger

  4. Controleer of de tabel bestaat in SQL Server