我如何检查值是否存在于 sql server 中指定的日期之前

手足代

我在 sql 表中有以下数据,

ID | supplier | Supplier_Due | Date      |
1  | S-0003   | 14850        |2020-11-09
2  | S-0003   | 850          |2020-11-09
3  | S-0003   | 21750        |2020-11-13
4  | S-0003   | 975          |2020-11-15
5  | S-0003   | 75           |2020-11-17

假设用户想要获取 2020-11-13 的数据,即

3  | S-0003   | 21750        |2020-11-13

但我想在指定的日期之前让以前的供应商到期

850

随着

3  | S-0003   | 21750        |2020-11-13

所以我想得到的实际查询是这个

ID | supplier | Supplier_Due | Date      | Previous Due
3  | S-0003   | 21750        |2020-11-13 | 850

如果没有以前的到期我想回来

ID | supplier | Supplier_Due | Date      | Previous Due
3  | S-0003   | 21750        |2020-11-13 | 0.00

我什至不知道如何编写查询,因为我不明白如何去做

专卖店

您可以使用窗口函数。假设date可用于一致地订购每个供应商的记录:

select *
from (
    select t.*, 
        lag(supplier_due, 1, 0) over(partition by supplier order by date) as previous_due
    from mytable t
) t
where date = '2020-11-13' and supplier = 'S-0003'

典型的替代方法是子查询或横向连接:

select t.*, coalesce(t1.supplier_due, 0) as previous_due
from mytable t
outer apply (
    select top (1) supplier_due
    from mytable t1
    where t1.supplier = t.supplier and t1.date < t.date
    order by t1.date desc
) t1
where date = '2020-11-13' and supplier = 'S-0003'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL Server和C#-如何检查我要上传的varbinary(max)文件是否已存在于表中?

检查节点是否存在于 SQL Server xml 列中

使用C#检查文本是否已存在于SQL Server中

根据我在SQL Server 2016中指定的时区格式化日期

如何检查条目是否存在于单独的SQL Server表中,以及如何根据所存在的功能更改链接的功能

SQL Server-是否将返回的行值全部存在于集合中

创建之前如何检查我的数据是否已经存在于数据库中?

使用 asp.net 时,如何检查我的 pin 是否存在于 SQL 数据库中?

如何在 SQL Server 函数中指定列名?

在SOAP请求中设置对象的值之前,如何检查对象是否存在于数组中?

检查值是否存在于多个表中-Oracle SQL

PL/SQL 检查输入的值是否存在于不同的表中

检查列值是否存在于SQL的另一列中

如何检查SQL服务器中的所有记录,是否存在于MySQL中?

如何检查记录是否已存在于SQL数据库中?

“日期”与UNPIVOT列表SQL Server中指定的其他列的类型冲突

是否有任何SQL查询来检查值是否存在或不存在于数据库表中

如何检查SQL Server约束是否存在?

如何检查成员名称(变量或函数)是否存在于类中(指定或不指定类型)?

如何使用SQL检查一个表中存在的json值数组是否存在于另一个表中?

如何在合并数据集之前检查行是否存在(SQL Server)

检查SQL Server中特定月份是否存在日期

如何在添加特定对象之前检查其是否已存在于数组中

发送重置电子邮件之前,如何检查用户是否存在于Firebase中?

检查日期是否存在于星期中

如何使用Java检查指定对象是否存在于给定对象列表中

如何验证输入的发票号是否已经存在于我的sql表中?

是否可以通过使用SQL Server中的SQL参数在临时表中指定列长度的方法?

如何在连接字符串中指定使用SQL Server LocalDb 2014而不是SQL Server LocalDb 2016?