【发布时间】:2022-01-22 07:24:23
【问题描述】:
我有表格 - 发票,结构如下:
| Id | InvoiceNo | Date |
|---|---|---|
| 1 | 10 | 11-12-21 |
| 2 | 20 | 12-12-21 |
| 3 | 30 | 13-12-21 |
| 4 | 40 | NULL |
| 5 | 50 | 14-12-21 |
| 6 | 60 | NULL |
| 7 | 70 | NULL |
| 8 | 80 | 15-12-21 |
我需要做什么-我需要找到InvoiceNo,其下一行或上一行的日期字段包含null。 所以,根据提供的数据 - 我应该收到:
| InvoiceNo |
|---|
| 30 |
| 50 |
| 80 |
但是如何做到这一点呢?我发现的一个选项 - LAG() 和 LEAD() 函数,使用这些函数我可以接收数字和日期,但不能使用参数 - 所以不能提供“日期不为空”检查。
【问题讨论】:
-
你解释一下这个输出背后的逻辑吗?
-
你能不能展示一下你到目前为止所做的尝试。
-
@Mureinik 如果当前行的上一条或下一条记录在“日期”字段中包含 null - 我应该返回这一行。
-
根据问题指南,请展示您的尝试并告诉我们您发现了什么(在本网站或其他地方)以及为什么它不能满足您的需求。
标签: sql sql-server tsql lag lead