如何在按一列过滤的所有行中获取重复值

时间:2014-06-19 00:46:25

标签: sql sql-server-2012

这是我的表格。

Person  Date      Entry
Person1 05-20-14  142
Person2 05-20-14  443
Person1 05-21-14  248    
Person1 05-21-14  142

我需要两件事。

首先是一个人第一次进入的次数。

我尝试使用这些查询。但问题是我每天都需要这些信息。

那就是如果我查询05/21,我需要看输出

"Person1 1"

142不会被包括在内,因为它已经存在。

在我的查询中,我已按日期过滤,所以我不知道如何出去搜索其余的日期值。这就是我所拥有的。

SELECT PERSON, Count(distinct Entry) 
from [table]
where date >= 05/21/2014
and date < 05/22/2014
group by person
order by person.

这给了我

  Person1 2

这里考虑了248和142。我如何查找142是以前日期已经完成的条目。我不太擅长嵌套查询。

感谢您的光临。

2 个答案:

答案 0 :(得分:0)

对于第一个查询,听起来你需要这样的东西:

SELECT Person 
FROM sample
GROUP BY date, person
HAVING date = '05-21-2014'

请参阅http://sqlfiddle.com/#!3/4653d/1

这也可能有所帮助:

SELECT Person, date
FROM sample
GROUP BY date, person
ORDER BY date

希望这有帮助,如果我误解某事,请告诉我。

答案 1 :(得分:0)

这会解决您的问题或让您了解内部查询应该如何?

SELECT PERSON, Count(distinct Entry) 
from [table]
where date >= 05/21/2014
and date < 05/22/2014
  and Entry not in (select distinct entry from [table] where date <> 05/21/2014)
group by person
order by person.

在上面的查询中我刚刚添加了一个内部查询来从其他日期获取不同的条目

select distinct entry from [table] where date <> 05/21/2014

我添加了where条件,当前结果不应该通过

来考虑这些条目
and Entry not in (select distinct entry from [table] where date <> 05/21/2014)

希望这会对你有所帮助。