两个列两个条件
问题描述:
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
我已经找到多少在一定时期内两个列两个条件
多少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
答
创建calendar table并用它来加入帮你出你的第一个查询。在日历表中定义您的时间段,然后根据您的日历表时间段对一些连接和计数语句进行分组,这是一件简单的事情。
第二个查询是相似的,但我会做一个mobilenumbers = 0的子查询,并将所有的1加入到该时间段的子查询中。
在我的解决方案的编码,我敢肯定,我发现我错了约几个这些方法的;)
+0
感谢sam.calender表解决了我的问题。 – Anik 2011-05-22 19:12:24
一个如何判断登记状态由0变为1? – 2011-04-28 19:25:06
@将A:可能基于之前(按日期)的值。 – 2011-04-28 20:50:52