如何解决确定特定客户在特定月份首次访问商店的情况
我需要确定首次访问商店的客户每个月(和一年)(别名为Patient_ID)的计数明细。商店访问的日期时间存储在表的[MDT审核日期]列中。
客户可以在一年中多次来到商店并增加总数->但我所需要的只是客户第一次造访。
例如汤姆·邦巴迪尔(Tom Bombadil)于2019年1月访问了这家商店一次,因此计数增加到1,然后在3月又增加了4次,因此计数应该是3月的1、2月的0、1月的1,然后在10月的4次,然后在12月又2次。
我要求汤姆·邦巴迪尔(Tom Bombadil)在一个特定的月份应该被计数一次,并且只能计数一次,他的第一次出现是每月
输出应为:
rn1 YEAR Month_Number Month Total_Count
1 2010 6 June 2
1 2010 7 July 1
1 2010 8 August 5
1 2010 10 October 5
1 2010 11 November 3
1 2011 1 January 4
1 2011 2 February 6
1 2011 4 April 7
1 2011 5 May 4
1 2011 6 June 10
1 2011 7 July 10
1 2011 8 August 14
1 2011 9 September 4
1 2011 10 October 8
1 2011 11 November 11
1 2011 12 December 11
1 2012 1 January 8
1 2012 2 February 21
请参考我的查询。我尝试使用窗口功能COUNT
来计算每月的商店访问量。然后ROW_NUMBER
函数尝试为每次访问分配一个唯一的编号。我在做什么错了?
select
*
from
(select distinct
row_number() over (partition by p.Patient_ID,p.PAT_Forename1,p.PAT_Surname
order by PAT_Forename1,p.Patient_ID,PAT_Surname) AS rn1,datepart(year,[DATE_COLUMN]) as YEAR,datepart(month,[DATE_COLUMN]) as Month_Number,datename(month,[DATE_COLUMN]) as Month,count(p.Patient_ID) over (partition by datepart(year,[DATE_COLUMN]),[DATE_COLUMN])) as Total_Count
from
Tablename m
inner join
TableName p on m.PK_ID = p.PK_ID
) as temp
where
rn1 = 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。