gpt4 book ai didi

sql - 在 SQL SERVER 中获取日期范围内的列的第一个非空值的最快方法

转载 作者:行者123 更新时间:2023-12-01 21:59:46 30 4
gpt4 key购买 nike

假设我有以下 SQL 表(主键:日期),

date      foo
-------- ----
20181001 NULL
20181101 10
20181201 NULL
20190101 1

如何获取“foo”列的第一个非空值,

  1. 从日期“20181001”到“20181101”?
  2. 从“20181201”到“20190101”?

我应该使用什么 SQL 服务器函数?请帮助提供一个函数,该函数对于具有约 100 万条记录的大型表来说速度更快。

最佳答案

我们可以使用ROW_NUMBER:

WITH cte AS (
SELECT date, foo, ROW_NUMBER() OVER (ORDER BY date) rn
FROM yourTable
WHERE foo IS NOT NULL
)

SELECT date, foo
FROM cte
WHERE rn = 1;

如果您还想限制到某个日期范围,则只需将其添加到 WHERE 子句:

SELECT date, foo
FROM cte
WHERE rn = 1 AND date BETWEEN '20181001' AND '20181101';

关于sql - 在 SQL SERVER 中获取日期范围内的列的第一个非空值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54004256/

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