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

Функции на прозореца за преброяване на различни записи

Попаднах на този въпрос в търсене на решение на моя проблем с преброяването на различни стойности. В търсене на отговор попаднах на тази публикация . Вижте последния коментар. Тествах го и използвах SQL. Работи много добре за мен и реших, че ще предложа друго решение тук.

В обобщение, използвайки DENSE_RANK() , с PARTITION BY групираните колони и ORDER BY и двете ASC и DESC върху колоните за преброяване:

DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName ASC) +
DENSE_RANK() OVER (PARTITION BY drugClass ORDER BY drugName DESC) - 1 AS drugCountsInFamilies

Използвам това като шаблон за себе си.

DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields ASC ) +
DENSE_RANK() OVER (PARTITION BY PartitionByFields ORDER BY OrderByFields DESC) - 1 AS DistinctCount

Надявам се това да помогне!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. datetime2 срещу smalldatetime в SQL Server:Каква е разликата?

  2. Как мога да извикам SQL функция в C#?

  3. SQL Server 2008 – Разделяне

  4. Как да предам списък като параметър в съхранена процедура?

  5. Как да разберем типа данни за география на SQL Server