首先,感谢任何帮助我解决此问题的人。我正在使用SQL 2005,但如果05中没有可用的解决方案,则可以使用2008。
我有一排数据看起来像这样:
select * from mySPtable
| myPK | Area | RequestType | StartDate | EndDate |
1 SB ADD 8/14/2011 8/18/2011
2 NB RMV 8/16/2011 8/16/2011
因此,我要做的是每天计算每个区域的总请求量。结果应为:
| myDate | RequestType | Area | myCount |
8/14/2011 ADD SB 1
8/15/2011 ADD SB 1
8/16/2011 ADD SB 1
8/16/2011 RMV NB 1
8/17/2011 ADD SB 1
8/18/2011 ADD SB 1
我该怎么做呢?我很沮丧,没有任何谷歌搜索帮助。
您将需要一个Calendar表,或者可以使用CTE生成一个。一旦有了这些,其余的查询就应该变得无关紧要了。由于递归问题并且不允许使用聚合,因此CTE方法可能有点复杂,因此下面我使用了一个表变量。您还可以使该表成为永久表,并将其保留在数据库中。
SET NOCOUNT ON
DECLARE @Calendar TABLE (my_date DATETIME NOT NULL)
DECLARE @date DATETIME, @max_date DATETIME
SELECT @date = MIN(StartDate), @max_date = MAX(EndDate) FROM My_Table
WHILE (@date <= @max_date)
BEGIN
INSERT INTO @Calendar (my_date) VALUES (@date)
SELECT @date = DATEADD(dy, 1, @date)
END
SELECT
C.myDate,
M.RequestType,
M.Area,
COUNT(*) AS myCount
FROM
@Calendar C
INNER JOIN My_Table M ON
M.StartDate <= C.myDate AND
M.EndDate >= C.myDate
GROUP BY
C.myDate,
M.RequestType,
M.Area
ORDER BY
C.myDate,
M.RequestType,
M.Area
根据您可能的日期范围有多大,填充表变量可能需要一段时间。例如,如果范围跨越了十年或两年
问题内容: 我有一个和。我想获取这两个日期之间的日期列表。谁能帮助我指出查询中的错误。 这是一个变量。 问题答案: 您应该将这两个日期放在单引号之间,例如。 或可以使用 请记住,第一个日期是包含日期,但第二个日期是排除日期,因为它实际上是“ 2011/02/27 00:00:00”
问题内容: 我在使用Excel和Access数据库在VBA中进行sql查询时遇到问题。在mi VBA代码中,我有两个具有以下内容的数据变量: DateMin = 31/07/2014 22:00:00 DateMax = 01/08/2014 06:00:00 而且我有一个访问数据库,其中包含许多带有日期字段的数据。我试图从数据库中提取两个变量之间具有日期的数据,并对此进行编码: 但是不起作用。结
问题内容: 已修正-这是我现在所拥有的 -用ASP编写 原始问题: 简单的问题,但由于某种原因,我似乎无法正常工作。 我有一个搜索框,旁边是日期范围选择菜单,因此用户可以搜索最近1个月,6个月或12个月内的照片。 我所拥有的没有错误,但是当它应该执行时它不会产生任何结果,就是这样: SQL输出产生以下结果: 数据库的’dateCreated’字段设置为(Date INDEX)。 谁能看到哪里出了问
问题内容: 我需要填充一个表,该表将存储2个给定日期之间的日期范围:09/01/11-10/10/11 因此,在这种情况下,该表将从2011年9月1日开始存储,直到每天存储到10/10/11,我想知道在SQL Server中是否有一种巧妙的方法-我目前正在使用SQL Server 2008 。 谢谢 问题答案: 在SQL 2005+上很容易;如果您有数字表或理货表,操作会更容易。我在下面伪造了它:
问题内容: 我有两个这样的表: 表格1 表2 我想从 Table1中 选择并插入 Table2中 。 例如: 在表1中,我有这个 在表2中,我想要这个 带有样本数据的表结构 问题答案: 感谢您的架构。它使处理您的问题变得容易。我对您的架构进行了一些更改以利用auto_increment 在这里,我在emp_leave_daywise表上添加了唯一约束,因为id整数上的主键不能确保记录不重复。 em
我有一个数据集,我需要在其中计算不同日期和初始日期之间的天差。更准确地说,这是列表的示例: 我想要实现的是计算页面“b”中的第一个日期与剩余天数之间的天数。因此,对于页面“b”,我现在认为第二个条目是第一个日期后的 1 天,下一个条目是 2 天,依此类推。这里的问题是我有不同的页面和不同的初始日期。 谢谢