sql-server - 动态计算日期列 MS SQL Server 中所有行的 DateDiff
问题描述
我正在尝试计算单个列中连续行的日期之间的天数差Date_col
。然后,我想将这些差异放入一个名为 Expected_Results 的新列中。
到目前为止,我有以下代码:
DECLARE @datedifferences DATETIME
SET @datedifferences = (SELECT DATEDIFF(DAY, MIN(Date_col), MAX(Date_col)) FROM Schema.Table)
SELECT DISTINCT TOP 100 Date_col
FROM Database.Schema.Table
WHERE Date_col = @datedifferences
ORDER BY Date_col
以下是我想要返回的内容:
Date_col Expected_Results
1/1/2018 --
2/2/2018 31
3/3/2018 31
4/4/2018 31
5/5/2018 31
6/6/2018 31
7/7/2018 31
8/8/2018 31
但是,查询成功运行,但没有返回任何内容。我怀疑这是因为我缺少某种循环来遍历行。如何将 while 循环合并到查询中以成功迭代行,以便查询打印预期结果?
解决方案
你认为这只是一个声明吗?因为不是。您有 3 个单独的语句:
DECLARE @datedifferences datetime;
SET @datedifferences = DATEDIFF(day, min(Date_col), max(Date_col));
SELECT DISTINCT TOP 100 Date_col
FROM Database.Schema.Table
WHERE Date_col = @datedifferences
ORDER BY Date_col;
中间语句 ( SET...
) 无法访问它下面的 SELECT 语句的 FROM 子句,因此它不知道Date_col
您在其中引用的内容。因此,中间语句中的列名无效Date_col
。
推荐阅读
- php - 如何允许登录用户编辑页面,如果没有登录只显示?
- javascript - 浏览器扩展和windows服务之间的通信
- linux - 手册页上的 bat(1) git(1) 等命令名称中的 1 代表什么
- python - 从 iframe 中动态加载的表中抓取时出现 Python Selenium 超时异常
- angular - PWA 添加到主屏幕功能不适用于 Mozilla Firefox
- python - 自定义前缀 Discord.py
- jquery - 如何汇总动态表格输入表单的所有价格并在新输入类型中附加值?
- ios - Frame SwiftUI内的居中路径形状
- delphi - 程序加载期间添加的菜单项的 Vcl 样式问题
- unity3d - 如何在地图上拖动鼠标进行导航?