有趣的 SQL 连接日期之间的日期

2023-12-28

首先,感谢任何帮助我解决这个问题的人。我使用的是 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

我该怎么做呢?我被难住了,无论用多少谷歌搜索都没有帮助。


您需要一张日历表,也可以使用 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

根据您的潜在日期范围有多大,填充表变量可能需要一段时间。例如,如果范围跨越十年或两年。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有趣的 SQL 连接日期之间的日期 的相关文章

随机推荐

  • 为什么 Ruby 方法中使用感叹号?

    在 Ruby 中 有些方法带有问号 问这样的问题include 询问是否包含有问题的对象 然后返回 true false 但为什么有些方法带有感叹号 其他人没有的地方 这是什么意思 一般来说 以以下结尾的方法 表明该方法将修改它所调用的对象
  • AMD64 -- nopw 汇编指令?

    在此编译器输出中 我试图了解机器代码编码的方式nopw教学作品 00000000004004d0
  • 符号:隐式字符串转换在 JavaScript 中如何工作?

    阅读有关的文档Symbol在 JavaScript 中进行测试 并在一些环境 Chrome Firefox Node js 中进行测试时 我意识到我对隐式字符串转换的理解是有缺陷的 我一直觉得这个物体是toString 尝试转换为字符串时调
  • 如何从 JqGrid 中单元格的自定义格式化程序访问其他行数据

    我有一个XML数据源如下
  • AttributeError:“NoneType”对象在 suds 中没有属性“str”

    我在我们的项目中使用 WSDL 的 suds 客户端 我有这个代码 sudsclient sudsClient settings WSDL URL values MerchantCode settings YP MERCHANT CODE
  • UWP (c#):主循环(事件循环)

    背景 我对 C 和 UWP 比较陌生 并开始开发一个应用程序以学习基础知识 我尝试寻找我认为是一个非常基本的问题的答案 但我找不到答案 可能是我的错 因此 我正在制作的应用程序连接到传输一些数据的蓝牙设备 第一个 查看页面 是蓝牙设备选择
  • 如何以与应用程序启动器相同的方式在 iPhone 上“闪耀”png?

    我想向用户展示当应用程序启动器将其方形平面 png 图像转换为正常的 闪亮 图标时会是什么样子 例如圆角和玻璃效果 Thanks 对于图标上 闪耀 的应用程序内表示 您可以使用以下代码创建一个绘制闪耀渐变的自定义 UIViewhere ht
  • 如何将变量的值传递到命令的标准输入?

    我正在编写一个应该有点安全的 shell 脚本 即不通过命令参数传递安全数据 并且最好不使用临时文件 如何将变量传递到命令的标准输入 或者 如果不可能 我如何正确使用临时文件来完成此类任务 在 Bash 中将值传递到标准输入非常简单 you
  • 测试移除方法而不调用添加方法

    我正在为管理标签对象树的类编写测试 public class Tag public virtual int Id get set public virtual string Description get set private IList
  • 用C语言编写的快速排序

    我正在阅读 K R 的 ANSI C 我遇到了 qsort 程序 我需要一点帮助 假设我有 9 个元素 索引为 0 gt 8 请阅读评论 看看我的理解是否正确 非常感谢你的努力 void qsort int v int left int r
  • 错误:编译规则集失败:“loader”上的查询参数已被删除,以支持“options”属性

    PS C Projects webpack react starter gt npm run start 电子邮件受保护 cdn cgi l email protection开始 webpack服务 模式开发 env开发 hot 端口300
  • 在.Net Core 2.1中使用FirstOrDefault时抛出System.Linq.Expressions异常

    我收到了大约 300 多个异常 这些异常在我的服务器输出中被垃圾邮件标记为 Exception thrown System ArgumentException in System Linq Expressions dll 我正在使用的查询如
  • JavaFX:多次使用线程

    我是 JavaFX 新手 我对线程有一个小问题 我可以执行它两次 但我找不到原因 这是我的代码的总结 Task
  • Android:旋转并显示文件中的图像

    我有一个非常简单的 ImageView 布局 我的应用程序打开相机 保存图像 然后在 ImageView 中显示图像BitmapFactory decodeFile 唯一的问题是它是旋转的 据我了解 a 这是由于手机的摄像头默认为横向 因此
  • wpf 中的 ItemsPanelTemplate 选择器?

    我需要根据控件上的依赖属性设置列表框的 ItemsPanelTemplate 属性 如何使用 DataTemplateSelector 来做到这一点 我有类似的东西
  • 如何将 XML Word 文档转换为 DOCX?

    我收到了一系列文件夹 其中包含大量 xml 格式的 Word 文档 它们每个都包含一些 VBA 代码 但所有代码都已经运行过 所以我不需要保留它 我需要打印每个文件夹中的所有文件 但由于网络上 XML 文件的限制 我无法简单地从 Windo
  • FIELDDATA 数据太大

    我打开 kibana 并进行搜索 然后收到分片失败的错误 我查看了 elasticsearch log 文件 看到了这个错误 org elasticsearch common breaker CircuitBreakingException
  • 使用 gnuplot 的向量场

    如何绘制矢量场 其中每个点 x y 的方向由下式给出tangent alpha f x y 据我所知 gnuplot 只能在从文件读取数据时绘制向量场 您的文件必须有 4 列 x y deltax 和 delta y 然后 gnuplot
  • Unity aab 不符合 Google Play 64 位要求

    我有一个 Unity 项目 正在从 APK 切换到 AAB 应用程序包 以前 当我将其构建为 APK 时 Google Play 控制台告诉我该 APK 兼容 64 位 现在我正在构建 aab 我收到警告 此版本不符合 Google Pla
  • 有趣的 SQL 连接日期之间的日期

    首先 感谢任何帮助我解决这个问题的人 我使用的是 SQL 2005 但如果 05 中没有可用的解决方案 可以使用 2008 我有一行数据 如下所示 select from mySPtable myPK Area RequestType St