db2 获取每个帐户最近N个月的数据

hlswsv35  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(321)

我不知道这是否可行,但我们能否分别获得每个帐户/ ID最近N个月的数据?
假设我有一个包含ID、交易金额和日期的表。每个ID的最后日期都不相同

ID    | Trx_Amount |    Trx_Date
ID001 |    104     |   04/10/2022
ID002 |     76     |   20/09/2022
ID003 |     82     |   17/08/2022

然后我想分别得到他们最近3个月的交易,而不仅仅是使用WHERE Trx_Date BETWEEN DATE(CURRENT DATE) - 3 MONTHS AND DATE(CURRENT DATE)。可以吗?

ezykj2lf

ezykj2lf1#

WITH MYTAB (ID, Trx_Amount, Trx_Date) AS
(
  VALUES
    ('ID001', 30, '2022-10-04'::DATE)
  , ('ID001', 20, '2022-10-04'::DATE - 3 MONTH)
  , ('ID001', 10, '2022-10-04'::DATE - 3 MONTH - 1)
  , ('ID002',  3, '2022-10-01'::DATE)
  , ('ID002',  2, '2022-10-01'::DATE - 3 MONTH)
  , ('ID002',  1, '2022-10-01'::DATE - 3 MONTH - 1)
)
SELECT T.*
FROM
(
  SELECT ID, MAX (Trx_Date) AS Trx_Date
  FROM MYTAB
  GROUP BY ID
) G
JOIN MYTAB T ON T.ID = G.ID AND T.Trx_Date BETWEEN G.Trx_Date - 3 MONTH AND G.Trx_Date
ORDER BY T.ID, T.Trx_Date DESC

| 识别码|交易金额|事务处理日期|
| - -|- -|- -|
| 编号001| 30个|2022年10月4日|
| 编号001| 20个|2022年7月4日|
| 编号002|三个|2022年10月1日|
| 编号002| 2个|2022年7月1日|

相关问题