SQL Server 插入缺失行

2023-12-01

我有下表记录每天的值。问题是有时会缺少几天。我想编写一个 SQL 查询来:

  1. 归还缺失的日子
  2. 使用线性插值计算缺失值

所以从下面的源表中可以看出:

Date           Value
--------------------
2010/01/10     10
2010/01/11     15
2010/01/13     25
2010/01/16     40

我想返回:

 Date           Value
 --------------------
 2010/01/10     10
 2010/01/11     15
 2010/01/12     20
 2010/01/13     25
 2010/01/14     30
 2010/01/15     35
 2010/01/16     40

任何帮助将不胜感激。


declare @MaxDate date
declare @MinDate date

select @MaxDate = MAX([Date]),
        @MinDate = MIN([Date])
from Dates

declare @MaxValue int
declare @MinValue int

select @MaxValue = [Value] from Dates where [Date] = @MaxDate
select @MinValue = [Value] from Dates where [Date] = @MinDate

declare @diff int
select @diff = DATEDIFF(d, @MinDate, @MaxDate)

declare @increment int
set @increment = (@MaxValue - @MinValue)  / @diff

select @increment

declare @jaggedDates as table
(
    PID INT IDENTITY(1,1) PRIMARY KEY,
    ThisDate date,
    ThisValue int
)

declare @finalDates as table
(
    PID INT IDENTITY(1,1) PRIMARY KEY,
    [Date] date,
    Value int
)

declare @thisDate date
declare @thisValue int
declare @nextDate date
declare @nextValue int

declare @count int
insert @jaggedDates select [Date], [Value] from Dates
select @count = @@ROWCOUNT

declare @thisId int 
set @thisId = 1
declare @entryDiff int
declare @missingDate date
declare @missingValue int

while @thisId <= @count
begin
    select @thisDate = ThisDate,
            @thisValue = ThisValue
    from @jaggedDates
    where PID = @thisId

    insert @finalDates values (@thisDate, @thisValue)

    if @thisId < @count
    begin
        select @nextDate = ThisDate,
            @nextValue = ThisValue
        from @jaggedDates
        where PID = @thisId + 1

        select @entryDiff = DATEDIFF(d, @thisDate, @nextDate)
        if  @entryDiff > 1
        begin
            set @missingDate = @thisDate
            set @missingValue = @thisValue
            while @entryDiff > 1
            begin
                set @missingDate = DATEADD(d, 1, @missingDate)
                set @missingValue = @missingValue + @increment
                insert @finalDates values (@missingDate, @missingValue)
                set @entryDiff = @entryDiff - 1
            end
        end
    end

    set @thisId = @thisId + 1
end

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

SQL Server 插入缺失行 的相关文章

  • 比较字符串结尾的最佳方法是使用 RIGHT、LIKE 还是其他?

    我需要将字符串的结尾与存储过程中可能的结尾列表进行比较 会被叫很多 大概有10 15个候选结局 此时 仅使用代码的解决方案比创建专用于此的表更好 类似的东西 IF ENDSWITH var foo OR ENDSWITH var bar O
  • 使用 MOVE 确定 DB RESTORE 的 SQL 数据路径

    我正在尝试编写一个自动恢复数据库备份的脚本 我知道我可以使用以下 RESTORE 命令 RESTORE DATABASE DBRestoredName FROM DISK N C path to backup bak WITH FILE 1
  • TSQL 多列唯一约束也允许多个 Null

    我目前正在做一些从 MS Access 到 SQL Server 的迁移 Access 允许唯一索引中存在多个 Null 而 SQL Server 不允许 我一直在通过删除 SQL Server 中的索引并添加筛选索引来处理迁移 CREAT
  • SQL WHERE 语句?

    如果我想返回 A 列为 null 或 B 列为 null 的行 但不返回两者都为 null 的行 那么我的 WHERE 子句应该在 SQL 语句中是什么 WHERE ColA is NULL AND ColB is NOT NULL OR
  • 在SQL Server中,not(columnName='value')和columnName<>'value'之间有什么区别吗?

    在 SQL Server 的 where 子句中 无论您编写代码有什么区别not columnName value or columnName lt gt value 我正在考虑性能方面的问题 有人告诉我 当使用 Not 时 它可能不会使用
  • 是否可以使用不在 GROUP BY 中的 ORDER BY 列?

    正如标题所说 这是我的代码 SELECT material SUM Amount AS Amount RIGHT CONVERT varchar 50 date in 106 8 FROM rec stats GROUP BY materi
  • 搜索并替换字符串 t-SQL

    每个人我都试图编写一个查询来替换末尾出现的所有字符串 我有一些干扰词 确切地说是 104 个 如果它们出现在字符串末尾 则需要将其从字符串中删除 例如 两个干扰词是 Company LLC 以下是一些示例和预期输出 American Com
  • 基于现有数据库表创建@TableVariable?

    我想在存储过程中使用表变量 但这是一个问题 我的表非常大 声明表变量也需要很长的代码来编写和调试 请告诉我一些快速声明表变量的方法 是否可以基于现有表创建表变量 或者请分享任何创建用于创建表变量的代码的提示 Thanks 右键单击表格 选择
  • 如何在sql中查询xml列

    我在 SQL Server 2008 上有一个表 T1 其中包含一个 XML 列 EventXML 我想查询某个节点包含特定值的所有行 更好的是 我想检索不同节点中的值 表T1 T1 EventID int EventTime dateti
  • BCP 语法问题

    总之 我正在尝试编写一个可以每天从 SQL Server 2008 实例上的批处理文件运行的查询 我以前从未使用过 BCP 但在查看了一些在线示例后 我尝试创建一个真正的基本查询来测试计算机上的进程和权限 然后再将选择查询扩展到所需的数据集
  • 用于神经网络模型预测的数据的缺失值

    我目前有大量数据将用于训练预测神经网络 美国主要机场的千兆字节天气数据 我几乎每天都有数据 但有些机场的数据中存在缺失值 例如 机场在 1995 年之前可能不存在 因此在此之前我没有该特定位置的数据 此外 有些还缺少整年 可能跨度为 199
  • 如何对 Stack Exchange Data Explorer (SEDE) 结果进行分页?

    Using 数据浏览器 https data stackexchange com stackoverflow query 875322创建查询 SELECT P id creationdate tags owneruserid answer
  • 仅当所有记录都匹配时 SQL 连接

    我有3张桌子 CP carthead idOrder CP cartrows idOrder idCartRow CP shipping idCartRow idShipping dateShipped 每个 idOrder 可以有多个 i
  • 更新列的脚本

    表名 公民 Firstname Lastname Telephone1 Many other columns John Smith 03907625212 Andrew Evans 0807452132 Bill Towny 0590712
  • SQL中的三元运算符? “传递给 LEFT 或 SUBSTRING 函数的长度参数无效”

    抱歉这个误导性的话题 我不知道如何更好地表达 因为我主要是一名软件开发人员 所以我想到了三元运算符并解决了以下问题 我需要找到通过可为空的外键链接两个表的最可靠的方法 modModel and tabSparePart 两者之间唯一的相似之
  • 每行中非空列的计数

    我有一个包含 4 列的表 在第 5 列中我想存储前 4 列中有多少个非空列的计数 例如 其中 X 是任意值 Column1 Column2 Column3 Column4 Count X X NULL X 3 NULL NULL X X 2
  • 错误:不支持的 PIVOT 列类型:文本

    我正在尝试执行 PIVOT 但出现错误 我正在尝试查看哪些患者接受了多次间隔治疗 该列是文本类型 我尝试在查询中将列类型转换为 VARCHAR MAX 但仍然收到错误 这是我的代码 SELECT patientname IntervalNa
  • SQL 查询将文本数据存储在 Varbinary(max) 中

    有没有办法让 varbinary 在 SQL Server 中接受文本数据 这是我的情况 我有相当大量的 XML 我计划以 压缩 格式存储它们 这意味着 Varbinary 但是 当我进行调试时 我希望能够翻转配置开关并以纯文本形式存储 以
  • 分组和切换列和行

    我不知道这是否会被正式称为枢轴 但我想要的结果是这样的 Alex Charley Liza 213 345 1 23 111 5 42 52 2 323 5 23 1 324 5 我的输入数据采用这种形式 Apt Name
  • 在 C# 中执行基于存储过程的查询后,如何重新使用 CommandText 的 SqlCommand 对象?

    我有一个示例代码 aCommand CommandType CommandType StoredProcedure aCommand Parameters AddWithValue book id bookID aCommand Param

随机推荐

  • 初始化没有对象类型的数组列表 - JAVA [重复]

    这个问题在这里已经有答案了 这个问题不是关于为什么我们将列表初始化为接口而不是实现 例如 List
  • 在哪里可以找到低级声音编程理论教程

    我是一名中级图形程序员 我想从头开始学习音频 声音处理理论 就像 一个像素 及其组成部分 R G B A 是图形编程的基本部分一样 我想了解类似的声音编程 谁能给我指出好的链接吗 我还想知道一些允许我操纵声音的库 最好是便携式的 可以直接处
  • 通过 ssh 发送带有 argjson 的 jq

    我正在尝试通过 ssh 运行 jq 命令来获取此 JSON nodes app nodes 1 is manager true ip 0 0 0 0 cpus 16 memory 64 data nodes 1 ip 0 0 0 0 cpu
  • 对用户隐藏 PHP

    有没有办法向用户隐藏我正在使用 PHP 的事实 我想这样做有两个原因 1 所以地址栏中的链接看起来更干净 就像 stackoverflow 上的这里一样 2 防止潜在的黑客立即知道要寻找什么 第 2 点是否现实 或者黑客是否会知道我在使用什
  • 如何根据滑块上滑块当前位置的滑块颜色更改 JFXSlider 滑块的颜色?

    我正在使用一个JFXSlider在JavaFX中 我使用了线性渐变的颜色JFXSlider的轨道 使用 CSS 但是 我还想将拇指的颜色更改为该位置滑块的颜色 我使用了以下 CSS 来实现滑块的线性渐变并消除滑块的默认绿色JFXSlider
  • Objective-C:导航栏中的背景图像和标题

    我的导航栏中需要背景图像和标题 对于图像我写了一个类别 implementation UINavigationBar MyNavigationBar void setBackgroundImage UIImageView aTabBarBa
  • 如何使用 jquery-mobile 获取点击事件的位置/坐标?

    Jquery mobile 支持这些事件 http jquerymobile com demos 1 0a3 docs api events html 如何获取移动设备上点击事件的位置 例如在图像内 myimg bind tap funct
  • 反序列化 List 对象

    我正在尝试将 XML 反序列化为对象 但我陷入了一种情况 任何人都可以帮我吗 XML
  • 保存为 JPEG with Pillow 的图像与原始图像不同。

    我有一个 3 d numpy 数组 并使用 Pillow 将其保存为 JPEG 图像 当我使用 Pillow 重新加载图像时 生成的 numpy 数组有所不同 我为此编写了一个演示代码 from PIL import Image impor
  • 将开始和结束锚标记之间的字符串替换为其他字符串

    我需要用其他字符串替换一对锚标记之间的字符串 更清楚地说 a Click Here a 我想更换 点击这里 与 img src 标签 我阅读了一些其他资源 尝试了 Lars Olav Torvik 的正则表达式工具 但严重失败 请帮帮我 不
  • 如何基于分段控件和添加按钮切换到 2 个视图?

    我在导航控制器的标头中有一个分段控件 我想将一个对象添加到也在该导航控制器中的表视图控制器中 这就是我的问题所在 如何从一个 UIButton 切换到 2 个视图中的 1 个 即每个分段控件选项的不同添加视图 您只能从故事板中的 UIBar
  • Excel 将 URL 转换为图像 (1004)

    我有一个链接到 SQL 数据库的 Excel 文档 其中包含几列图像 URL One of those URLs looks like this https imissit blob core windows net iris 596480
  • 将两个字符串作为数值进行比较

    我应该如何比较 C 中表示数字的两个字符串 我想转换为数量long longtype 但问题是 string 表示的数值可以超过long long最大限制 保证该字符串代表一个数值 Java中也有类似的问题比较两个数字字符串值 但这利用了
  • 如何将变量转换为json?

    我想将json数据发送到ajax 但是如何将变量转换为json或将数组转换为json confirm order click function event event preventDefault var street street val
  • 如何跨线程共享包含 Sender 和 Receiver 字段的结构?

    我有一个结构 大致如下所示 struct Node id Arc
  • 程序从windows启动? C#

    So 我已经构建了一个只需打开一个新程序的winforms winform中的代码是这样的 如果有人需要 Process a Process a Process Start notepad exe BUT 我需要知道如何让程序随 Windo
  • 整数数组中具有最大总和的子序列[重复]

    这个问题在这里已经有答案了 给定一个整数数组 如何找到两个索引 i 和 j 使得子数组中从索引开始和结束的元素之和最大化 在线性时间内 简单的 假设你得到了数组a 首先 计算数组s where s i a 0 a 1 a i 您可以在线性时
  • 添加按钮到 QVideoWidget

    每个人 我尝试为 QMediaPlayer 元素设置点击属性 但我找不到制作它的模式 如果我尝试将按钮放在视频前面 该按钮会放在视频后面 即使使用 button gt raise videoWidget gt lower 如果我按下按钮全屏
  • 如何在没有 2^n if 语句的情况下启动具有许多布尔参数的函数模板

    我有一个 CUDA C 代码 专门出于性能原因而使用函数模板 这样该函数将只执行它需要执行的操作 而不是不断加载和读取布尔值来检查它是否需要执行操作 所有模板参数都是布尔值 在启动内核时 CPU 检查布尔值并启动适当的 我相信这称为内核模板
  • SQL Server 插入缺失行

    我有下表记录每天的值 问题是有时会缺少几天 我想编写一个 SQL 查询来 归还缺失的日子 使用线性插值计算缺失值 所以从下面的源表中可以看出 Date Value 2010 01 10 10 2010 01 11 15 2010 01 13