SQL 查询,用于显示自过去 6 个月以来没有任何类型的事务的用户列表



pl 帮助我获取自过去 6 个月以来没有任何交易的用户列表

我尝试了下面的查询,仍然显示ID列表,谁也有当前交易,但我想要这个在过去6个月不活跃的人的详细信息,即自过去6个月以来没有交易

select AST_ID,
AST_VALUE_DATE,
max(distinct(AST_VALUE_DATE)) from account_statement 
having max(AST_VALUE_DATE)<='30-09-2020'   
group by AST_ID,
AST_VALUE_DATE
order by AST_VALUE_DATE desc;

有人可以帮助我哪里出错吗?

我认为你只是想要:

select AST_ID, max(LAST_VALUE_DATE) as LAST_VALUE_DATE
from account_statement 
group by AST_ID
having max(LAST_VALUE_DATE) <= DATE '2020-09-30'
order by LAST_VALUE_DATE desc;

您按 ID 和日期进行分组;max(AST_VALUE_DATE)始终与每行的AST_VALUE_DATE相同。(不同的没有添加任何内容)。

您还与字符串进行比较,而不是日期;它依赖于隐式转换。

从选择列表和分组依据中删除多余的AST_VALUE_DATE,并与正确的日期进行比较,或者作为文字:

select AST_ID, max(AST_VALUE_DATE) as AST_VALUE_DATE
from account_statement 
group by AST_ID
having max(AST_VALUE_DATE) < date '2020-09-30'
order by AST_VALUE_DATE desc;

或者从今天起回顾六个月:

having max(AST_VALUE_DATE) < add_months(trunc(sysdate), -6)

或者从本月开始回顾六个月:

having max(AST_VALUE_DATE) < add_months(trunc(sysdate, 'MM'), -6)

我想这是您想要的基于您当前的字符串值。

数据库<>小提琴

最新更新