如何避免在SQL中使用空记录进行计数

时间:2014-04-25 02:05:06

标签: sql sql-server stored-procedures

当我尝试从我的sql表中的列中获取值的计数时,它返回该列的所有值的记录但是我需要的是如果列中有空记录那么count不应该得到空记录但是应该计算其他值记录。 这是我的查询来计算列的值

SELECT COUNT( dt_UserTTrainingDate2) as a FROM ref_CourseRegistration_Users 

有办法吗?

2 个答案:

答案 0 :(得分:2)

使用此构造:

SELECT COUNT(NULLIF(dt_UserTTrainingDate2,'')) as a 
FROM ref_CourseRegistration_Users

它使用NULLIF()函数来比较2个值,如果它们相等则返回NULL。在这种情况下,结果NULL将不包括在count

答案 1 :(得分:0)

根据评论判断,您的dt_UserTTrainingDate2列不是DATE类型,而是某种字符串类型。这是糟糕的数据库设计;使用内置类型。

鉴于它是一个字符串,你必须始终在SQL中更加努力。使用错误的类型,它真的是为你自己制作一根杆,但那是你的问题,而不是我们的问题。

SELECT COUNT(dt_UserTTrainingDate2) AS a
  FROM ref_CourseRegistration_Users
 WHERE dt_UserTTrainingDate2 != ' ';

计算日期字符串不为空的行。它还会忽略任何具有NULL值的行。

道德:使用DATE类型存储日期。