Попаднах на този въпрос в търсене на решение на моя проблем с преброяването на различни стойности. В търсене на отговор попаднах на тази публикация . Вижте последния коментар. Тествах го и използвах 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
Надявам се това да помогне!