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