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)
我想这是您想要的基于您当前的字符串值。
数据库<>小提琴