2013-09-05 2 views
2

Я хочу, чтобы подсчитать количество строк, имеющей дату null.i судимой следующемукак сравнить SQL дату с нулевым

SELECT R.COUNTRY_CD,COUNT(R.EFFECTIVE_END_DT) AS d_null 
FROM REIMBURSEMENT R 
GROUP BY R.COUNTRY_CD,R.EFFECTIVE_END_DT 
HAVING R.COUNTRY_CD = @COUNTRY_CD AND R.EFFECTIVE_END_DT IS NULL 

, но это дает d_null как 0 ...

как я могу сравнить дата для NULL

+0

Кажется, что вы ищете ' COUNT (IF (R.EFFECTIVE_END_DT NULL, 1, NULL)) AS d_null' –

+0

Как будет указывать значение COUNT (Column) NULL? Либо его ноль, либо больше ?! –

+0

yup, он дает 0, хотя их несколько записей – Rohaan

ответ

5

COUNT только цифры NULL.

Попробуйте COUNT(*) или COUNT(1) вместо COUNT(R.EFFECTIVE_END_DT).

Поскольку вы обеспечиваете Country_CD в качестве параметра, и вы хотите только NULL даты, вероятно, можно упростить запрос:

SELECT R.Country_CD, COUNT(*) AS d_null 
FROM Reimbursement R 
WHERE R.Country_CD = @Country_CD AND R.Effective_End_DT IS NULL 
+0

, но я хочу получить общее количество нулевых дат – Rohaan

+0

@RohanS 'COUNT (*)' или 'COUNT (1)' вернет количество дат 'NULL' из-за 'GROUP BY' и' R.EFFECTIVE_END_DT IS NULL' в разделе 'HAVING'. – Dukeling

0

Попробуйте

SELECT R.COUNTRY_CD,COUNT(R.EFFECTIVE_END_DT) AS d_null 
FROM REIMBURSEMENT R 
GROUP BY R.COUNTRY_CD,R.EFFECTIVE_END_DT 
HAVING R.COUNTRY_CD = @COUNTRY_CD AND DATE_FORMAT(R.EFFECTIVE_END_DT,"%y") IS NULL 
Смежные вопросы