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 DISTINCT
từ khóa, nhưng sau đó nó sẽ không phải là một số lượng riêng biệt.
DISTINCT
dườ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 OVER
hà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.
COUNT
vớiORDER BY
thay vìPARTITION BY
là 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 BY
dụng một hàm tổng hợp.