Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Fensterfunktionen zum Zählen unterschiedlicher Datensätze

Ich bin auf diese Frage gestoßen, als ich nach einer Lösung für mein Problem des Zählens unterschiedlicher Werte gesucht habe. Auf der Suche nach einer Antwort bin ich auf diesen Beitrag gestoßen . Siehe letzten Kommentar. Ich habe es getestet und das SQL verwendet. Es funktioniert wirklich gut für mich und ich dachte, ich würde hier eine andere Lösung anbieten.

Zusammenfassend mit DENSE_RANK() , mit PARTITION BY die gruppierten Spalten und ORDER BY beides ASC und DESC auf die zu zählenden Spalten:

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

Ich benutze dies als Vorlage für mich.

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

Ich hoffe, das hilft!