我从表格中拉出两列以返回具有当前日期日期但仅包含当前日期的特定行。例如,说铅笔的日期是1/22/2014和2/22/2014。我不希望显示它,因为它有两行具有唯一日期。但是,在使用count(*)> 1来获取这些唯一行后,我无法计算唯一行的数量。我试着对这个物品进行计数,然后检查这个物品(因此如果它只有一行,它会显示),哪个“有效”,但是然后检查了其他不起作用的值。在对唯一行进行计数后对唯一值进行计数?
use db
select todate, item
from table
group by todate, item
having count(*)>1
and cast(todate as date) = '2015-1-17'
and count(item)=1
order by item
据我所知,这应该工作,不是吗?我的猜测是问题出在count(item)和它的'计数所有非唯一行而不是唯一行,但我不知道如何解决这个问题。无论如何只计算唯一的行吗?
对于这个表,
todate item
2015-01-17 pencil
2015-01-17 pencil
2014-02-22 pencil
2015-01-17 pen
2015-01-17 pen
2015-01-17 eraser
那么它应该返回
todate item
2015-01-17 pen
2015-01-17 eraser
,因为那些只能有唯一的日期。它不会返回铅笔,因为它有不止一个唯一的日期。
请提供样本数据和期望的输出。 – RedFilter