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 DISTINCTkata kunci, tetapi kemudian tidak akan menjadi hitungan yang berbeda.
DISTINCTtampaknya 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 OVERfungsi - fungsi ini bekerja secara berbeda dengan Oracle sehingga tidak dapat digunakan SQL-Serveruntuk 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.
COUNTdenganORDER BYbukannyaPARTITION BYtidak jelas pada tahun 2008. Saya terkejut itu membiarkan Anda memilikinya sama sekali. Berdasarkan dokumentasi , Anda tidak diizinkanORDER BYuntuk fungsi agregat.