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

SQL GROUP BY CASE оператор с агрегатна функция

Предполагам, че всъщност не искате да GROUP BY някакъв_продукт.

Отговорът на: „Има ли начин да GROUP BY псевдоним на колона, като some_product в този случай, или трябва да поставя това в подзаявка и да групира това?" е: Не можете да GROUP BY псевдоним на колона.

SELECT клауза, където са присвоени псевдоними на колони, се обработва едва след GROUP BY клауза. Може да се използва вграден изглед или общ табличен израз (CTE), за да се направят резултатите достъпни за групиране.

Вграден изглед:

select ...
from (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
   from ...
   group by col1, col2 ... ) T
group by some_product ...

CTE:

with T as (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
   from ...
   group by col1, col2 ... )
select ...
from T
group by some_product ... 


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Разлика между дата и час в sqlserver?

  2. Използване на разширени събития за регистриране на остарели функции, използвани в екземпляр на SQL сървър (пример за T-SQL)

  3. Каква е разликата между Float и числово/десетично в SQL Server - SQL Server / T-SQL Урок, част 33

  4. 5 трика за осигуряване на максимална производителност на SQL Server

  5. Как да създадете функция на SQL Server, за да обедините множество редове от подзаявка в едно ограничено поле?