我有一个带有日期 ( 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 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 是数字字段,不能将 '' 作为值。
还有其他建议吗?
感谢您的帮助