小编Nas*_*ici的帖子

从滚动最大值检索日期

我有一个带有日期 ( session_date) 和值 ( price) 的 SQL Server 表。

会话日期 价格
2022-12-31 10
2022-12-30 9
2022年12月29日 5
2022年12月28日 7
2022年12月27日 2
2022-12-26 9
2022年12月25日 3
2022年12月24日 1

我想计算最后 3 行(日期)的滚动最大值并检索与每个最大值关联的 session_date:

会话日期 价格 滚动最大 滚动最后日期
2022-12-31 4 9 2022年12月29日
2022-12-30 4 9 2022年12月29日
2022年12月29日 9 9 2022年12月29日
2022年12月28日 7 7 2022年12月28日
2022年12月27日 2 4 2022-12-26
2022-12-26 4 4 2022-12-26
2022年12月25日 3 3 2022年12月25日
2022年12月24日 1 1 2022年12月24日

我正在使用此查询来计算滚动最大值,但如何获取关联的session_date

select session_date
, price
, max(price) over …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server over-clause window-functions

5
推荐指数
1
解决办法
215
查看次数

强制 COALESE(NULL,NULL) 返回 NULL

在 SQL SERVER 中考虑以下事实:Col1 和 Col2 包含数字和 NULL 值

SELECT 
COALESCE(Col1,Col2) 
Run Code Online (Sandbox Code Playgroud)

返回错误:“COALESCE 的至少一个参数必须是非 NULL 常量的表达式。” 考虑到 Col1 和 Col2 为 NULL,我想在这种情况下强制它返回 NULL 值。

解决方法对我来说似乎不优雅/低效:

SELECT
NULLIF(COALESCE(Col1 ,Col2 ,''),'') 
Run Code Online (Sandbox Code Playgroud)

请注意,Col1 和 Col2 是数字字段,不能将 '' 作为值。

还有其他建议吗?

感谢您的帮助

sql t-sql sql-server

2
推荐指数
1
解决办法
363
查看次数

标签 统计

sql ×2

sql-server ×2

t-sql ×2

over-clause ×1

window-functions ×1