1

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

例如我有一个 SQL 查询

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

但它计算了约翰的所有数字。我需要的是,如果我找到一个 name 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。

4

2 回答 2

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%'看到这个小提琴

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

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

为每个用户查看此 FIDDLE

于 2012-08-09T06:26:56.077 回答
-1

根据明确要求更新查询

对于甲骨文

SELECT count(distinct (extract day from date)) FROM mytable WHERE name like '%John%' and Date 不为空;

于 2012-08-09T06:20:20.800 回答