gpt4 book ai didi

SQL 桶确定年龄分组

转载 作者:行者123 更新时间:2023-12-04 23:43:51 27 4
gpt4 key购买 nike

我有一个包含遗留数据的数据库,该数据库存储交易并使用“桶”方法确定账户余额。我需要一种方法来让帐户过期。

表交易
交易编号
交易类型(CHARGE,RECEIPT)
金额
发布日期

获取当前余额:

SELECT SUM(CASE TransactionTypeId WHEN RECEIPT THEN Amount * -1 ELSE Amount END) CurrentBalance

我需要一种方法来确定逾期 30、60、90、120 等:

账户当前 30 60 90 120+
12345 $50.00 $0.00 $25.00 $25.00 $0.00

我尝试运行单独的查询并将 CHARGE postdates 限制为大于 30,60,90,120,为每个组运行并减去其他组,等等,但无法获得预期的结果。

该表不存储逾期标志,所有余额都是动态计算的。

我是不是漏掉了一些简单的东西?我尝试了网络搜索,但不确定是否有此类 sql 查询的术语。

如果有帮助,数据库是 SQL Server。

TIA

最佳答案

您可以在 case 中使用附加子句来过滤掉过去 30 天的交易。例如:

SELECT 
SUM(
CASE WHEN TransactionTypeId = 'RECEIPT' THEN -Amount
ELSE Amount
END) as CurrentDue
, SUM(CASE WHEN datediff(d,PostDate,getdate()) <= 30 THEN 0
WHEN TransactionTypeId = 'RECEIPT' THEN -Amount
ELSE Amount
END) as PastDue30
, ...
FROM Transactions

要仅排除过去 30 天的费用,请交换 when 子句:

,   SUM(CASE WHEN TransactionTypeId = 'RECEIPT' THEN -Amount 
WHEN datediff(d,PostDate,getdate()) <= 30 THEN 0
ELSE Amount
END) as PastDue30

关于SQL 桶确定年龄分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2121155/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com