Tôi đang cố gắng viết những điều sau để có được tổng số NumUser khác nhau đang chạy, như sau:
NumUsers = COUNT(DISTINCT [UserAccountKey]) OVER (PARTITION BY [Mth])
Quản lý studio có vẻ không quá hài lòng về điều này. Lỗi sẽ biến mất khi tôi xóa DISTINCTtừ khóa, nhưng sau đó nó sẽ không phải là một số lượng riêng biệt.
DISTINCTdường như không khả thi trong các chức năng phân vùng. Làm cách nào để tìm số lượng riêng biệt? Tôi có sử dụng một phương pháp truyền thống hơn chẳng hạn như một truy vấn con tương quan không?
Xem xét vấn đề này xa hơn một chút, có thể các OVERhàm này hoạt động khác với Oracle theo cách mà chúng không thể được sử dụng SQL-Serverđể tính toán tổng đang chạy.
Tôi đã thêm một ví dụ trực tiếp ở đây trên SQLfiddle nơi tôi cố gắng sử dụng hàm phân vùng để tính tổng số đang chạy.
COUNTvớiORDER BYthay vìPARTITION BYlà không rõ ràng vào năm 2008. Tôi ngạc nhiên là nó cho phép bạn có nó. Theo tài liệu , bạn không được phép sửORDER BYdụng một hàm tổng hợp.