Saya mencoba untuk menulis yang berikut ini untuk mendapatkan total NumUsers yang berbeda, seperti:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Studio manajemen sepertinya tidak terlalu senang dengan ini. Kesalahan menghilang saat saya menghapus DISTINCT
kata kunci, tetapi kemudian tidak akan menjadi hitungan yang berbeda.
DISTINCT
tampaknya tidak dimungkinkan dalam fungsi partisi. Bagaimana cara saya mencari hitungan berbeda? Apakah saya menggunakan metode yang lebih tradisional seperti subkueri berkorelasi?
Melihat lebih jauh, mungkin OVER
fungsi - fungsi ini bekerja secara berbeda dengan Oracle sehingga tidak dapat digunakan SQL-Server
untuk menghitung total yang berjalan.
Saya telah menambahkan contoh langsung di sini di SQLfiddle di mana saya mencoba menggunakan fungsi partisi untuk menghitung total yang berjalan.
COUNT
denganORDER BY
bukannyaPARTITION BY
tidak jelas pada tahun 2008. Saya terkejut itu membiarkan Anda memilikinya sama sekali. Berdasarkan dokumentasi , Anda tidak diizinkanORDER BY
untuk fungsi agregat.