如果指定行只计算一次,即使该行存在多次?
例如我有一个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。
答案 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%'
的
此外,对于每个用户,请尝试以下操作:
SELECT Name,COUNT(DISTINCT CONVERT(varchar,date,103)) AS NameCount
FROM mytable GROUP BY name
每个用户
答案 1 :(得分:-1)
根据明确要求更新查询
对于oracle
SELECT count(distinct(从日期开始提取日期))FROM mytable WHERE name 比如'%John%'和Date不为空;