所以我很难搞清楚我正在努力解决的问题。简而言之,我正在尝试考虑缺失数据(针对指标报告)。
实施例。我期望每个服务器每15分钟窗口有12个结果,当这个数字不满足时,我想插入一个简单标记为缺失的记录,其日期和时间对应于表中缺少的记录。 / p>
是否有人熟悉可以计算批量插入的插件,其中未满足特定数量(在本例中为12)以满足该目标?
让我们说我的桌子是这样设置的:
ID Server Uptime CheckTime Checkdate Status
1 test1 100 12:15 1/1/13 GOOD
2 test2 100 12:15 1/1/13 BAD
3 test4 100 12:15 1/1/13 GOOD
在这种情况下,当我期待12时,只返回了3个标记。如何在没有手动过程的情况下生成剩余的9个记录并将其标记为缺失?特定ID并不重要,相关数据将是Server,Checkdate,Checktime和Status。
到目前为止我想到的想法是这样的:
dbo.tbluptime = a
dbo.tblreportingtabletest = b
Select missing, SERVER, checkdate, checktime from a
X=a.missing
insert X rows into B
Values (MISSING, a.server, a.checkdate, a.checktime)
where b.server=a.server and b.checkdate=a.checkdate and b.checktime=a.checktime
格式化和语法无论如何。
答案 0 :(得分:0)
选择符合时间范围的记录计数(在本例中为3),然后选择“expectedCount”(即12)并从中减去计数(3)。然后多次插入......
答案 1 :(得分:0)
以下是一种生成缺失记录的方法:
with n as (
select 1 as n
union all
select n + 1
from n
where n <= 12
),
dt as (
select top 1 checktime, checkdate
from t
)
select NULL as id, NULL as server, NULL as uptime, dt.checktime, dt.checkdate,
'MISSING' as status
from n cross join dt
where n.n <= 12 - (select count(*) from t)
union all
select *
from t;