两个列两个条件

问题描述:

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. 我已经找到多少在一定时期内两个列两个条件

  2. 多少registrationstate从0与上述相同给定周期变更为1 registrationstate = 1。

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 
+0

一个如何判断登记状态由0变为1? – 2011-04-28 19:25:06

+0

@将A:可能基于之前(按日期)的值。 – 2011-04-28 20:50:52

创建calendar table并用它来加入帮你出你的第一个查询。在日历表中定义您的时间段,然后根据您的日历表时间段对一些连接和计数语句进行分组,这是一件简单的事情。

第二个查询是相似的,但我会做一个mobilenumbers = 0的子查询,并将所有的1加入到该时间段的子查询中。

在我的解决方案的编码,我敢肯定,我发现我错了约几个这些方法的;)

+0

感谢sam.calender表解决了我的问题。 – Anik 2011-05-22 19:12:24