Tsql T-SQL计算百分比

Tsql T-SQL计算百分比,tsql,sql-server-2000,Tsql,Sql Server 2000,我有一个SQL Server(2000)数据库和客户(健身俱乐部) 客户每年都会加入。我希望能够计算出在那里续签会员资格的客户的百分比(随着时间的推移和过去的一年)。活动状态字段指示他们是否仍然是成员。 JoinDate不会更改。当成员续订时,有一个活动日期和一个 DueDate(当客户到期续订时),DueDate比激活日期提前1年。我想做的是试着了解一下续约客户的百分比,如果可能的话,按过去几年或总体划分。任何想法。谢谢 customer表中的字段包含: CustomerID J

我有一个SQL Server(2000)数据库和客户(健身俱乐部)

客户每年都会加入。我希望能够计算出在那里续签会员资格的客户的百分比(随着时间的推移和过去的一年)。活动状态字段指示他们是否仍然是成员。
JoinDate不会更改。当成员续订时,有一个活动日期和一个 DueDate(当客户到期续订时),DueDate比激活日期提前1年。我想做的是试着了解一下续约客户的百分比,如果可能的话,按过去几年或总体划分。任何想法。谢谢 customer表中的字段包含:

    CustomerID    JOIN Date    Cancel Date   ActiveStatus ActiveDate   DueDate

     12345        10/01/2011   NULL          Yes         10/01/2012  10/01/2013

     12346        1/1/2010     12/31/2011    No          1/1/2010     1/1/2011

好的,如果ActiveDate在加入日期之后,我们知道客户将续订会员资格。 要获得续订mebership的客户百分比,我们需要获得:

拥有ActiveDate>JOIN_Date(续订会员资格的客户)的客户数

续订会员资格的客户数量乘以100

此结果除以所有客户的总数

select 
(select COUNT(*)  from Customer where ActiveDate > JOIN_Date) * 100 / COUNT(*)
from Customer

您可以这样计算每个客户的续订次数

select
    *,
    datediff(yyyy, joindate, 
         case activestatus when 'yes' then  getdate() else CancelDate end
    )
from yourtable

谢谢你的回复。我不确定这是否会降低利率,因为即使有人在几年后取消,ActiveDate也会大于JoinDate。我知道你的查询运行正常-只是返回0%续订,不确定原因。嘿,我在我的计算机上用你的问题数据(两行)向表客户提问。当我运行查询时,我得到结果50。不知道为什么你会得到0.1卢斯卡。我在这个查询中得到一个语法错误:Msg 1023,级别15,状态1,第5行为datediff指定的参数1无效。