Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL - подзапитване в съвкупна функция

Подподаванията обикновено не са разрешени в съвкупни функции. Вместо това преместете агрегата вътре подзапитването. В този случай ще се нуждаете от допълнително ниво на подзапитване поради 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. SQL Server:Как да извличам данни от динамични множество таблици?

  2. Проблем с производителността в списъка за динамично падащо търсене в excel

  3. SSMS вече се предлага с Azure Data Studio

  4. Странирай със Sequelize.js в SQL 2008 (който не поддържа FETCH)

  5. Оператор CASE IN с множество стойности