Sql Date在数据库中分配可用日期 [英] Sql Date Grouping with avaliable dates in database

查看:67
本文介绍了Sql Date在数据库中分配可用日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 Offerid  date  offeravaliable Emailid 
73 6 / 8/2014 00:00:00 2
74 6/9/2014 00:00:00 2
75 6/10/2014 00:00:00 True 2
76 6/11/2014 00:00:00 True 2
77 6/12/2014 00:00:00 True 2
78 6/13/2014 00: 00:00 True 2
79 6/14/2014 00:00:00 True 2
80 6/16/2014 00: 00:00 True 2
81 6/17/2014 00:00:00 True 4
82 6/18/2014 00:00:00 True 4
83 2014/6/19 00:00:00 True 4
84 6/20/2014 00:00:00 True 4
89 6/27/2014 00:00:00 True 4
90 6/28/2014 00:00:00 True 4
91 6/29/2014 00:00:00 True 4
92 6/30/2014 00:00:00 True 4
93 6/1 / 2014 00:00:00 True 4
94 6/2/2014 00:00:00 True 4
95 6/3/2014 00:00:00 True 2
96 6/4 / 2014 00:00:00 True 2
97 6/5/2014 00:00:00 True 2
98 6/6/2014 00:00:00 True 2
99 6/7/2014 00:00:00 True < span class =code-digit> 2
100 6/21/2014 00:00:00 4
101 6/22/2014 00:00 :00 True 4
102 6/23/2014 00:00:00 True 4
103 6/24/2014 00:00:00 True 4
104 7/1/2014 00 :00:00 True 4
105 7/2/2014 00:00:00 True 4
106 7/3/2014 00:00:00 True 4
121 7/6/2014 00:00:00 True 2
122 7/7 / 2014 00:00:00 True 2
123 7/8/2014 00:00:00 True 2





以上记录我可以生成以下所有日期的组如

 StartDate  - EndDate EmailID 
6/1/2014 - 2014年6月2日 4
6/3/2014 - 2014年6月14日 2
6/16/2014 - 2014年6月16日 2
6/17 / 2014 - 6/24/2014 4
6/27/2014 - 2014年6月30日 4
7/1/2014 - 2014年7月3日 4





i试图为每个EmailID找到连续的日期块?

任何人都可以解决这个问题

提前感谢

解决方案

尝试使用Group By

  SELECT   date ,count(*)
WHERE date 介于 @ start @end
GROUP BY 日期


Offerid             date         offeravaliable   Emailid 
73           6/8/2014 00:00:00    True             2
74           6/9/2014 00:00:00    True             2
75           6/10/2014 00:00:00   True             2
76           6/11/2014 00:00:00   True             2
77           6/12/2014 00:00:00   True             2
78           6/13/2014 00:00:00   True             2
79           6/14/2014 00:00:00   True             2
80           6/16/2014 00:00:00   True             2
81           6/17/2014 00:00:00   True             4
82           6/18/2014 00:00:00   True             4
83           6/19/2014 00:00:00   True             4
84           6/20/2014 00:00:00   True             4
89           6/27/2014 00:00:00   True             4
90           6/28/2014 00:00:00   True             4
91           6/29/2014 00:00:00   True             4
92           6/30/2014 00:00:00   True             4
93           6/1/2014 00:00:00    True             4
94           6/2/2014 00:00:00    True             4
95           6/3/2014 00:00:00    True             2
96           6/4/2014 00:00:00    True             2
97           6/5/2014 00:00:00    True             2
98           6/6/2014 00:00:00    True             2
99           6/7/2014 00:00:00    True             2
100          6/21/2014 00:00:00   True             4
101          6/22/2014 00:00:00   True             4
102          6/23/2014 00:00:00   True             4
103          6/24/2014 00:00:00   True             4
104          7/1/2014 00:00:00    True             4
105          7/2/2014 00:00:00    True             4
106          7/3/2014 00:00:00    True             4
121          7/6/2014 00:00:00    True             2
122          7/7/2014 00:00:00    True             2
123          7/8/2014 00:00:00    True             2



above record through i can generate below group of all date like as

StartDate - EndDate    EmailID
6/1/2014 -  6/2/2014     4
6/3/2014 -  6/14/2014    2
6/16/2014 - 6/16/2014    2
6/17/2014 - 6/24/2014    4
6/27/2014 - 6/30/2014    4 
7/1/2014  - 7/3/2014     4 



i trying to find, for each EmailID, the contiguous blocks of dates?
any one solve this question
thanks in advance

解决方案

try with Group By

SELECT date,count(*)
WHERE date between @start and @end
GROUP BY date


这篇关于Sql Date在数据库中分配可用日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆