两栏两个条件

时间:2011-04-28 19:20:21

标签: sql sql-server

ID  mobileno        dateofregistration       registrationstate 
44  1674174925  2011-04-18 10:17:30.670         0
45  1677864168  2011-03-31 10:20:22.450         1
46  1677864161  2011-04-18 20:47:35.293         0
47  1674174925  2011-03-29 09:28:55.200         1
48  1674174967  2011-03-29 09:28:55.100         1
  1. 我要查找给定时间段内有多少registrationstate = 1

  2. 在同一时间段内,有多少注册状态从0变为1。

  3. SELECT  CONVERT(varchar(10), dateofregistration, 103) AS Date
            , COUNT(1) AS Subbase
            , SUM(CASE WHEN registrationstate='1' THEN 1 ELSE 0 END) AS NewAct
            , SUM(CASE WHEN (registrationstate='0' and registrationstate='1') THEN 1 ELSE 0 END) AS SuccessRen
    FROM    tbl_User 
    GROUP BY
            CONVERT(varchar(10), dateofregistration, 103)
    ORDER BY 
            1
    

1 个答案:

答案 0 :(得分:0)

创建calendar table并使用该联接来帮助您完成第一次查询。在日历表中定义您的期间,然后根据您的日历表期间的一些连接和计数语句进行分组。

第二个查询是类似的,但我会创建一个mobilenumbers = 0的子查询,并将该子查询的所有1加入到timeperiod中。

在我对解决方案进行编码的过程中,我确信我发现我对其中的一些方法有误解;)