SQL-检查字段值(货币)是否为客户相等时值的99%

SQL-检查字段值(货币)是否为客户相等时值的99%,sql,sql-server,tsql,sql-server-2016,Sql,Sql Server,Tsql,Sql Server 2016,请注意,我想编写一个具有以下条件的SQL查询 检查是否有借方金额=贷方金额的99%和101%之间,反之亦然 客户是平等的,日期是今天 假设我有下表: 客户借贷金额处理日期 1001 D 100 01/12/2020 1001 C 100.02 01/12/2020 1002 D 102 01/12/2020 1002 C 102 01/12/2020 1004 D 106 01/12/2020 1004 C 135 01/12/2020 1005 D 111 01/12/2020 1006 D

请注意,我想编写一个具有以下条件的SQL查询

检查是否有借方金额=贷方金额的99%和101%之间,反之亦然 客户是平等的,日期是今天

假设我有下表:

客户借贷金额处理日期 1001 D 100 01/12/2020 1001 C 100.02 01/12/2020 1002 D 102 01/12/2020 1002 C 102 01/12/2020 1004 D 106 01/12/2020 1004 C 135 01/12/2020 1005 D 111 01/12/2020 1006 D 123 01/12/2020 在这种情况下,我只希望显示前4条记录

有人能建议SQL查询应该是什么样子以获得这样的结果吗


谢谢您的时间。

您可以尝试下面的方法来获得比率并过滤掉。我已经为今天设定了常数。您可以相应地使用GETDATE

声明@table tablecustomerid int,借方char1,贷方char1, 金额,日期,日期 插入@table 价值观 1001,'D',空,100,'01/12/2020' ,1001,空,'C',100.02,'01/12/2020' ,1002,'D',空,102,'01/12/2020' ,1002,空,'C',102,'01/12/2020' ,1004,'D',空,106,'01/12/2020' ,1004,空,'C',135,'01/12/2020' ,1005,'D',空,111,'01/12/2020' ,1006,'D',空,123,'01/12/2020'; ;使用cte_customerId作为 选择customerId ,如果借方不为空,则金额结束为借方 ,sumcase当贷方不为空时,则金额结束为贷方 来自@table 其中DATEVAL='01/12/2020' 按客户ID分组 从customerid所在的@table中选择* 从cte\U customerid中选择customerid 其中贷方/借方介于0.99和1.01之间 或介于0.99和1.01之间的借方/贷方
请不要替换我们可以复制和粘贴的文本,使用我们无法理解的图像:但在发布时,它会丢失列缩进,因为您没有将其放入代码块/围栏中。一个客户在一个日期可能有多个借方和/或贷方吗?谢谢您,Larnu。感谢您的帮助,我们会记住这一点。谢谢。我会尝试并让您知道。谢谢你的支持time@AlanBartoli当然非常感谢您提供的查询。我只是用我的数据试了一下,可以确认它运行良好。我只是想看看我是否还能再做一件事。在DATAVAL where条款中,我将给出一个范围,例如2020年12月1日至2020年12月2日。因此,如果我的客户在2020年12月1日的借方为200,在2020年12月2日的贷方为201,则查询将返回一个值。在我的情况下,我不希望这个返回,因为这两个交易发生在不同的日期。你能建议点什么吗?再次感谢您抽出时间。您对此有更新吗。@AlanBartoli,您必须相应地申请分组。从@table-其中dateval='01/12/2020'组中选择customerId、dateval、sumcase(当借方不为空时),然后选择amt end(金额结束)作为借方,然后选择sumcase(当贷方不为空时),然后选择amt end(金额结束)作为贷方
+------------+-------+--------+--------+------------+
| customerid | debit | credit |  amt   |  dateval   |
+------------+-------+--------+--------+------------+
|       1001 | D     | NULL   | 100.00 | 2020-01-12 |
|       1001 | NULL  | C      | 100.02 | 2020-01-12 |
|       1002 | D     | NULL   | 102.00 | 2020-01-12 |
|       1002 | NULL  | C      | 102.00 | 2020-01-12 |
+------------+-------+--------+--------+------------+