gpt4 book ai didi

sql-server - 填写行中缺失的日期

转载 作者:行者123 更新时间:2023-12-01 06:17:28 25 4
gpt4 key购买 nike

给定一个具有如下模式的表:

id1    id2    day    number

我怎样才能把这个:

a    b    day1    2
a b day5 4
a b day9 8
c d day2 1
c d day3 2
c d day5 4
c d day8 3

进入这个?

a    b    day1    2
a b day2 2
a b day3 2
a b day4 2
a b day5 4
a b day6 4
a b day7 4
a b day8 4
a b day9 8
c d day2 1
c d day3 2
c d day4 2
c d day5 4
c d day6 4
c d day7 4
c d day8 3

为了澄清,对于每组 id1 和 id2,我需要填写缺失的行日期范围从该分组的最小日期到最大日期日期。此外,填写的行必须使用前一个条目的它的数字列的数字列。

我需要它尽可能快地运行。

如果您可以在 LINQ to SQL 中执行此操作(假设该类存在于表)。

编辑:天列实际上是一个代表天的整数,但为了争论,它可以是一个日期。

我采用了遍历每个组并添加缺失天数的幼稚方法,但它似乎效率极低。我不得不认为有更快的东西或者有人以前遇到过这种情况。

最佳答案

WITH    dates (id1, id2, ds, de) AS
(
SELECT id1, id2, MIN(d), MAX(d)
FROM mytable m
GROUP BY
id1, id2
UNION ALL
SELECT d.id1, d.id2, DATEADD(d, 1, ds), de
FROM dates d
WHERE ds < de
)
SELECT id1, id2, ds, m.number
FROM dates d
CROSS APPLY
(
SELECT TOP 1 number
FROM mytable m
WHERE m.id1 = d.id1
AND m.id2 = d.id2
AND m.d <= d.ds
ORDER BY
m.d DESC
) m
OPTION (MAXRECURSION 0)

关于sql-server - 填写行中缺失的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5421526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com