Sql server SQL中的成员计算逻辑

Sql server SQL中的成员计算逻辑,sql-server,Sql Server,我有一个表,有一组成员和他们的覆盖范围开始日期,但没有结束日期。我需要写一个查询,这将帮助我找出有多少独特的成员是在任何给定的一年名单的一部分。所以,基本上,我需要一个独特的成员计数,按年份细分,当我只有他们的会员资格的开始日期,但没有结束日期。这会让我知道每年有多少人辍学 输入 Member Start date End date ------------------------------ A 1/1/2016 B 1/2/2016 C

我有一个表,有一组成员和他们的覆盖范围开始日期,但没有结束日期。我需要写一个查询,这将帮助我找出有多少独特的成员是在任何给定的一年名单的一部分。所以,基本上,我需要一个独特的成员计数,按年份细分,当我只有他们的会员资格的开始日期,但没有结束日期。这会让我知道每年有多少人辍学

输入

Member  Start date  End date
------------------------------
A       1/1/2016    
B       1/2/2016    
C       1/3/2016    
D       1/2/2017    
E       1/3/2017    
F       1/5/2018    
预期结果将是:

Year    Member Count    
---------------------
2016    3   
2017    2   
2018    1
如果该成员包括在2016年、2017年的盘点中,则表示他已与我在一起两年。我知道开始日期,我会指定12/31年,直到他在那里作为结束日期,这给了我他是我客户的时间。希望这是有意义的。我需要弄清楚客户何时退出的原因是,这样我不仅可以知道每年我有多少客户,还可以知道某一年有多少客户退出,以及他作为客户的持续时间。希望这是有意义的

大家好

请忽略问题的第一部分,让我重新表述问题

在上面的例子中,假设我有成员id和开始日期,这表明他是客户的日期。是否有可能找到按月份和年份划分的符合条件的不同成员数,以及按月份和年份划分的在该特定月份符合条件的不同成员数


例如,从2011年1月开始,如果我们有10个客户,在2月,5个新客户加入,上个月的8个仍然是我的客户,因此2月的不同客户数是13个,2月的总新成员数是5个。从我阅读你的问题可以推断,有结束日期其实并不重要。按年份分组并计算不同的成员ID:

SELECT 
    YEAR(StartDate) 
    , COUNT(DISTINCT MemberID)
FROM dbo.YourTable
GROUP BY YEAR(StartDate)
ORDER BY YEAR(StartDate)

如果您只想要缺少成员和结束日期的结果,请在
分组依据之前添加
其中结束日期为空

谢谢联系Patrick。事实上,我的要求是,我得到一个分歧,即哪些成员在继续,哪些成员在退出。我需要了解哪些会员以及有多少会员在这些年中进行了结转,这样我就知道了客户与我在一起的起始日期起的时间长度,希望这能提供更多的背景信息。您如何确定会员是结转还是退出?@priyesha如果这个答案没有回答问题,那么问题是错误的,它返回的正是您想要的,请编辑您的问题并添加更多详细信息加上一个,它可能不是OP需要的,但它是OP要求的。如果您在另一个表中记录了他们的上一次付款,可能会有所帮助,为了解决这一问题,您需要在数据库甚至论文(报告、账单、注释…)中深入挖掘,以填写该数据。Hi Daniel,我们可以假设,如果我们在2016年找到我们名单中的客户部分,但2017年没有看到该id,那么他就退出了。没有必要深入研究其他方面。感谢您的帮助看起来您的示例数据根本不代表您的实际数据。没有重复的成员ID。任何年份中出现的成员都不会出现在任何其他年份中。在您的实际数据中,一个成员可以有多个开始日期吗?如果是这样的话,同一年中会有多个开始日期吗?图像根本无法解释任何内容,可能您希望使用该格式,但对于给定的输入没有任何意义,您或您的新样本也无法回答Eric的问题。。。。由于不清楚而决定关闭