Tôi đang thiết kế một truy vấn trong SSMS 2005 mà trông giống như sau:Chọn Count (Value biệt) trả về 1
SELECT COUNT(DISTINCT ColumnName) FROM Table WHERE ColumnName IS NOT NULL
Khi tôi chạy truy vấn với COUNT() nó trả về giá trị 1. Khi tôi chạy nó mà không có COUNT(), SSMS báo cáo giá trị chính xác, ví dụ: 212 bản ghi.
Cột được đề cập là số dữ liệu (16, 0).
Đối với những người có thể hỏi, truy vấn đầy đủ là:
SELECT COUNT(DISTINCT O_ID) FROM vEmployers
INNER JOIN vEnrolment ON O_ID = E_EnrolmentEmployer
WHERE E_START >= '01-AUG-2008' AND E_START < '01-AUG-2009'
AND O_ID IS NOT NULL AND O_ID IN (
SELECT O_ID FROM vEmployers
INNER JOIN vEnrolment ON O_ID = E_EnrolmentEmployer
WHERE E_Start < '01-AUG-2008' and E_Start >= '01-AUG-2007'
)
truy vấn này về cơ bản đưa ra một con số kinh doanh lặp lại giữa hai giai đoạn 12month.
Vì vậy, tôi tự hỏi tại sao "COUNT (DISTINCT ColumnName)" trả về 1 khi "ColumnName IS NOT NULL" đã được chỉ định?
Dưới đây là một mẫu của các dữ liệu khi chọn top 10 ColumnName DISTINCT TỪ ... vv được điều hành:
1346116
1346131
1346425
1346923
1349935
1350115
1350153
2594787
2821944
2879631
@GateKiller: bạn hoàn toàn chắc chắn rằng bạn chỉ bỏ qua 'COUNT' và không có gì khác? – Quassnoi
@Quassnoi: Có. – GateKiller
Đánh giá cao sự giúp đỡ của bạn cho đến giờ guys :) – GateKiller