Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL — podzapytanie w funkcji agregującej

Podzapytania generalnie nie są dozwolone w funkcjach agregujących. Zamiast tego przenieś agregat do środka podzapytanie. W takim przypadku będziesz potrzebować dodatkowego poziomu podzapytania ze względu na top 5 :

SELECT c.CategoryName,
  (select sum(val)
   from (SELECT TOP 5 od2.UnitPrice*od2.Quantity as val
         FROM [Order Details] od2, Products p2
         WHERE od2.ProductID = p2.ProductID
         AND c.CategoryID = p2.CategoryID
         ORDER BY 1 DESC
        ) t
  )
FROM [Order Details] od, Products p, Categories c, Orders o 
WHERE od.ProductID = p. ProductID
AND p.CategoryID = c.CategoryID
AND od.OrderID = o.OrderID
AND YEAR(o.OrderDate) = 1997
GROUP BY c.CategoryName, c.CategoryId


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wysyłać wiadomości e-mail z serwera SQL (T-SQL)

  2. Używanie COALESCE w widoku SQL

  3. SQL — podzapytanie w funkcji agregującej

  4. Jak zmienić sortowanie na poziomie serwera uruchomionej instancji SQL Server?

  5. SQL Server 2008 R2 — skalarny UDF skutkuje nieskończoną pętlą