Dela via


Arbeta med kolumner i aggregerade frågor (Visual Database Tools)

gäller för:SQL Server

När du skapar aggregerade frågor gör Query och View Designer vissa antaganden så att den kan konstruera en giltig fråga. Om du till exempel skapar en aggregeringsfråga och markerar en datakolumn för utdata, gör fråge- och vydesignern automatiskt kolumnen till en del av GROUP BY-satsen så att du inte oavsiktligt försöker visa innehållet i en enskild rad i en sammanfattning.

Använda gruppera efter

Fråge- och vydesignern använder följande riktlinjer för att arbeta med kolumner:

  • När du väljer alternativet Gruppera efter eller lägger till en aggregeringsfunktion i en fråga läggs alla kolumner som markerats för utdata eller används för sortering automatiskt till i GROUP BY-satsen. Kolumner läggs inte automatiskt till i GROUP BY-satsen om de redan ingår i en mängdfunktion.

    Om du inte vill att en viss kolumn ska ingå i GROUP BY-satsen måste du ändra den manuellt genom att välja ett annat alternativ i kolumnen Gruppera efter i fönstret Villkor. Men fråge- och vydesignern hindrar dig inte från att välja ett alternativ som kan resultera i en fråga som inte kommer att köras.

  • Om du manuellt lägger till en frågeutdatakolumn i en aggregeringsfunktion i antingen villkors- eller SQL-fönstret, tar fråge- och vydesignern inte automatiskt bort andra utdatakolumner från frågan. Därför måste du ta bort de återstående kolumnerna från frågeutdata eller göra dem till en del av GROUP BY-satsen eller en mängdfunktion.

När du anger ett sökvillkor i kolumnen Filter i fönstret Villkor följer fråge- och vydesignern följande regler:

  • Om kolumnen Gruppera efter i rutnätet inte visas (eftersom du ännu inte har angett någon aggregeringsfråga) placeras sökvillkoret i WHERE-satsen.

  • Om du redan är i en aggregeringsfråga och har valt alternativet Där i kolumnen Gruppera efter placeras sökvillkoret i WHERE-satsen.

  • Om kolumnen Gruppera efter innehåller något annat värde än Därplaceras sökvillkoret i HAVING-satsen.

Använda HAVING- och WHERE-satserna

Följande principer beskriver hur du kan referera till kolumner i en aggregeringsfråga i sökvillkor. I allmänhet kan du använda en kolumn i ett sökvillkor för att filtrera de rader som ska sammanfattas (en WHERE-sats) eller för att avgöra vilka grupperade resultat som visas i de slutliga utdata (en HAVING-sats).

  • Enskilda datakolumner kan visas i satsen WHERE eller HAVING, beroende på hur de används någon annanstans i frågan.

  • WHERE-satser används för att välja en delmängd rader för att sammanfatta och gruppera och tillämpas därför innan någon gruppering görs. Därför kan du använda en datakolumn i en WHERE-sats även om den inte ingår i GROUP BY-satsen eller finns i en mängdfunktion. Till exempel väljer följande uttalande alla titlar som kostar mer än $10,00 och beräknar medelpriset.

    SELECT AVG(price)  
    FROM titles  
    WHERE price > 10  
    
  • Om du skapar ett sökvillkor som omfattar en kolumn som också används i en GROUP BY-sats eller aggregeringsfunktion kan sökvillkoret visas som antingen en WHERE-sats eller en HAVING-sats – du kan bestämma vilken när du skapar villkoret. Följande instruktion skapar till exempel ett genomsnittligt pris för titlarna för varje utgivare och visar sedan medelvärdet för de utgivare där det genomsnittliga priset är större än 10,00 USD:

    SELECT pub_id, AVG(price)  
    FROM titles  
    GROUP BY pub_id  
    HAVING (AVG(price) > 10)  
    
  • Om du använder en aggregeringsfunktion i ett sökvillkor innehåller villkoret en sammanfattning och måste därför ingå i HAVING-satsen.

Se även

Sammanfatta frågeresultat (Visual Database Tools)
sortera och gruppera frågeresultat (Visual Database Tools)