sql >> Databasteknik >  >> RDS >> Sqlserver

Kolumnen ogiltig i urvalslistan eftersom den inte finns i vare sig en aggregatfunktion eller GROUP BY-satsen

Med andra ord, det här felet talar om för dig att SQL Server inte vet vilken B för att välja från gruppen.

Antingen vill du välja ett specifikt värde (t.ex. MIN). , SUM , eller AVG ) i vilket fall du skulle använda lämplig aggregatfunktion, eller så vill du välja varje värde som en ny rad (dvs. inklusive B i GROUP BY fältlista).

Tänk på följande data:

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

Frågan

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

skulle returnera:

A  T1
1  2
2  3

vilket är väl och bra.

Tänk dock på följande (olagliga) fråga, som skulle ge detta fel:

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

Och dess returnerade datamängd som illustrerar problemet:

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

Följande två frågor gör dock detta tydligt och kommer inte att orsaka felet:

  1. Använda ett aggregat

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

    skulle returnera:

    A  T1  B
    1  2   92
    2  3   68
    
  2. Lägger till kolumnen i GROUP BY lista

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

    skulle returnera:

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


  1. Använda Python och MySQL i ETL-processen:SQLAlchemy

  2. Hur använder man SqlCommand för att SKAPA DATABAS med parametrerat db-namn?

  3. Kolumnnamn eller antal angivna värden matchar inte tabelldefinitionen

  4. Automatisk radering av processer som har fastnat i MS SQL Server