我正在尝试对一组特定的数据进行日常分析。该表如下所示:
custNo visitTime FirstVisit
1234 2013-01-31 20:15
1234 2013-01-31 22:30
1234 2013-02-15 02:30
1234 2013-02-15 06:30
1234 2013-02-15 11:30
1234 2013-02-15 21:30
我正在尝试Daily analysis
使用custNo
. 正如您在上面看到的,客户编号重复出现。一天是2013-01-31 1:00am
到2013-02-01 00:59am
。我正在尝试对FirstVistTime
. 所以对于31st Jan
,它应该是2013-01-31 20:15
,对于15th Feb
它应该是2013-02-15 02:30
。
到目前为止,我想出了这个查询:
select custNo, visitTime, FirstVisit=(select MIN(c.visitTime) FROM customer c where
(c.custNo=ct.custNo and c.visitTime >= '01/01/2013 01:00' and c.visitTime < '03/01/2013
01:00')
from customer ct
where visitTime >= '01/01/2013 01:00'
and visitTime < '03/01/2013 01:00'
这样做的问题是 - 如果custNo
重复它会考虑所有行并计算最小日期,在上述情况下将是 2013-01-31 20:15
. 我尝试使用min(visitTime)over(partition by custNo,visitTime)
. 那么它是一个subquery
返回两个值的。