如何只为指定的记录计数一次?

时间:2012-08-09 06:15:13

标签: c# sql

如果指定行只计算一次,即使该行存在多次?

例如我有一个SQL查询

SELECT COUNT(Date) 
FROM mytable 
WHERE name like '%John%'

但它算上约翰的全部数字。我需要的是,如果我找到一个名字John,我想只计算一次,不管约翰的名字不止一次存在。

说明

Name       Date
John       06-09-2012 1am
Robert     06-09-2012 2am
John       06-09-2012 3am 
John       06-09-2012 4am
Robert     06-09-2012 5am

约翰的结果应为1。

2 个答案:

答案 0 :(得分:1)

您需要COUNT Distinct Date并且还需要使用GROUP BY这样的句子:

SELECT Name,COUNT(DISTINCT CONVERT(varchar,date,103)) AS NameCount
FROM mytable WHERE name LIKE '%John%'
GROUP BY name
name LIKE '%John%'

SEE THIS FIDDLE

此外,对于每个用户,请尝试以下操作:

SELECT Name,COUNT(DISTINCT CONVERT(varchar,date,103)) AS NameCount
FROM mytable GROUP BY name
每个用户

SEE THIS FIDDLE

答案 1 :(得分:-1)

根据明确要求更新查询

对于oracle

  

SELECT count(distinct(从日期开始提取日期))FROM mytable WHERE name   比如'%John%'和Date不为空;